⏲
Go defer на JS ⏲В Go есть очень крутой оператор defer, он позволяет отложить выполнение какой-либо операции на конец функции (неважно это return или выброс ошибки на текущем или ниже уровнях)Например, закрыть доступ к базе при выходе из функции где мы его открыли будет выглядеть примерно так:- - - -db := pg.connect()defer db.destroy()// Куча всякой логики и если будет return или выброс ошибки db.destroy() отработает// ...- - - -Всегда сетовал, что в JS, не было такого оператора, но я наконец-то нашел ему хоть какую-то алтернативу и это try ... finally ...Вроде, очевидно, но я почему-то никогда об этом не думал, поэтому пример выше будет таким:- - - -const db = pg.connect()try { // Куча всякой логики и если будет return или выброс ошибки db.destroy() отработает // ... } finally { db.destroy()}- - - -Не так элегантно, но дает возможность на 100% выполнить операцию при любом выходе из функцииСделал
gist с тестами