Size: a a a

Node.js — русскоговорящее сообщество

2020 May 02

V

Vint in Node.js — русскоговорящее сообщество
Veli
вот, в статье про эррорхендлинг в синхронных ошибках делают мидлвар, а на асинхронных уже трюкач на уровне каждого эндпоинта. Надеюсь, удастся избежать этого бойлерплейта
Можно избежать бойлерплейта и оборачивания всех методов через модуль
https://www.npmjs.com/package/express-async-errors
Он манки-патчит express router
источник

V

Veli in Node.js — русскоговорящее сообщество
LoganFrench
почему это странно, что очередь может пополняться?
потому что это слегка сложноватая задача в плане того, чтобы сделать это с хорошим перфомансом. Если бесконечные интервалы запускать, то это как-то не очень, мне кажется. Почему нельзя делать эти циклы запросов тогда, когда это нужно? Зачем следить за этим массивом?
источник

V

Veli in Node.js — русскоговорящее сообщество
Artem Soroka
Может быть, вам Event Emitter лучше подойдет?
согласен, через эммитер можно отслеживать изменение и вызывать эти запросы, когда надо. В разы лучше, чем интервалом проверять изменение массива
источник

AP

Andrii Plus in Node.js — русскоговорящее сообщество
у вас должна быть функция .. которая включает в себя аккумулятор. При вызове функции - кладем в массив и запускает раннер .. проверяемого .. не запущен ли уже .. и соответственно проходимся по массиву..

Но как по мне то это все  костыли .. думаю есть готовые Либы
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
LoganFrench
ой
async function delay(ms) {
 return new Promise(resolve => setTimeout(resolve, ms));
}

setInterval(async() => {
 console.log("start");
 await delay(1000);
 console.log("end")
}, 500)
источник

V

Veli in Node.js — русскоговорящее сообщество
Vint
Можно избежать бойлерплейта и оборачивания всех методов через модуль
https://www.npmjs.com/package/express-async-errors
Он манки-патчит express router
вааау, в описании либы прямо моя проблема описана, спасибо большое!
источник

L

LoganFrench in Node.js — русскоговорящее сообщество
да, это близко, теперь бы понять как она работает. спасибо
источник

AP

Andrii Plus in Node.js — русскоговорящее сообщество
Vint
Можно избежать бойлерплейта и оборачивания всех методов через модуль
https://www.npmjs.com/package/express-async-errors
Он манки-патчит express router
крутая либа.. надо копнуть что делает под капотом

больше похоже на патч к експрессу
источник

V

Vint in Node.js — русскоговорящее сообщество
Andrii Plus
крутая либа.. надо копнуть что делает под капотом

больше похоже на патч к експрессу
Ну, я о том и написал, что патч.
Банально навешивает на ответ хэндлера вызов .catch(err => next(err), если вернулся промис (т.е. хэндлер был async).
Только делает это на уровне Layer (см. устройство express router).
источник

AP

Andrii Plus in Node.js — русскоговорящее сообщество
уже покопал.. вроде небольшой патч.. и похоже заточен под версии експресса..
однако.. уже есть пулик для 5 версии
источник

V

Veli in Node.js — русскоговорящее сообщество
Vint
Ну, я о том и написал, что патч.
Банально навешивает на ответ хэндлера вызов .catch(err => next(err), если вернулся промис (т.е. хэндлер был async).
Только делает это на уровне Layer (см. устройство express router).
работает как часы, спасибо) Есть правда небольшой минус - импортировать его нужно на уровне каждого роутера. Если просто в индексе над экспрессом импортировать, то не сработает)
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Veli
работает как часы, спасибо) Есть правда небольшой минус - импортировать его нужно на уровне каждого роутера. Если просто в индексе над экспрессом импортировать, то не сработает)
по идее достаточно один раз импортнуть в main.js
источник

AP

Andrii Plus in Node.js — русскоговорящее сообщество
пробуйте в индексе  на самом верхнем уровне
источник

V

Vint in Node.js — русскоговорящее сообщество
Veli
работает как часы, спасибо) Есть правда небольшой минус - импортировать его нужно на уровне каждого роутера. Если просто в индексе над экспрессом импортировать, то не сработает)
Разве? Если в начале приложения импорт express и этой штуки сделать, то должно (сам не проверял).
источник

AP

Andrii Plus in Node.js — русскоговорящее сообщество
если eslint пропустит))
источник

V

Veli in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
по идее достаточно один раз импортнуть в main.js
почему-то не достаточно :c Вот так все равно появляются undhandled promise rejections
источник

V

Veli in Node.js — русскоговорящее сообщество
вот так уже нет
источник

AP

Andrii Plus in Node.js — русскоговорящее сообщество
сделайте импорт проверки ошибок первым (line 1)
источник

V

Vint in Node.js — русскоговорящее сообщество
Veli
вот так уже нет
Да, на самый верх надо.
источник

V

Veli in Node.js — русскоговорящее сообщество
Так, а в доке по либе написано под экспрессом. Кинул над экспрессом и сработало, спасибо!
источник