gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Когда используется next() в Express?

Согласно документации - для того чтобы перейти к обработке следующего ммм контроллера чтоли...
То есть там так:

req.get("/", function (req, res, next) {
  // ... code
 next();
}, function (req, res) {
 // ... code
});


Смысл как работает понятно, другой вопрос - при каких обстоятельствах реально нужно перейти к следующему действию? Что мешает вызвать это действие внутри первого, для чего сделана поддержка нескольких подряд? Или тут смысл в задержке вызова?

Кто-нибудь использует?
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
Здесь речь не о "контроллерах", а о middleware. И в этом контексте цепочка вызова становится понятной. Например:
  1. нужно разобрать тело запроса,
  2. потом обработать куки,
  3. потом проверить аутентификацию пользователя,
  4. потом получить данные пользователя из БД (асинхронная операция),
  5. потом выполнить собственно контроллер роута (асинхронная операция),
  6. потом залогировать время выполнения скрипта,
  7. потом подчистить какие-то артефакты.

Главная причина такой архитектуры - попытка избавления от callback-hell. В Express всё на колбэках, которые плохо приспособлены к асинхронности, на самом деле. Вот и придумали такие "промисы для бедных" (тут я сильно упростил, конечно).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы