Задать вопрос

Стоит ли использовать setImmediate / nextTick в Express?

Добрый день!
Недавно задался вопросом, стоит ли использовать setImmediate в Express?
Т.е. имеет ли смысл писать мидлверы и роутеры так:
app.use((req, res, next) => {
  setImmediate(() => {
    // Тяжелая синхронная операция
    ultraMegaLongComputing();
    next();
  });
})


вместо стандартного:
app.use((req, res, next) => {
  // Тяжелая синхронная операция
  ultraMegaLongComputing();
  next();
})


И вообще какие есть use case для setImmediate / nextTick в Node.js, да и в клиентском JS?
  • Вопрос задан
  • 442 просмотра
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Просто оборачивание тяжелой операции в setImmediate большого профита не даст, Вы все равно блокируете поток на время ее выполнения.
А вот разбить ее на небольшие быстрые части с помощью setImmediate можно, сам midleware будет отрабатывать чуть медленнее, зато EventLoop будет отрабатывать.
В большинстве случаев адекватно прерывать задачу на обработку EventLoop каждые 1000 итераций цикла, хотя конкретное число итераций зависит от вычислительной сложности тела цикла в Вашем случае.
Ответ написан
Комментировать
@LiguidCool
Я вот вообще не гуру ноды, но по моему 1-е бессмысленно... И как вернуть res? У вас ведь программа "дальше побежит" с пустым res и браузеру ничего не вернется. Может для записи информации и запросе её отдельно после это как-то применимо ...
В любом случае что мешает проверить?

PS
Я дилетант и не надо меня слушать :)
Поправьте если не прав.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы