Почему функция отрабатывает немедленно, несмотря на await внутри?

Непонятен ответ на этот вопрос на StackOverflow.

Цитирую с переводом:
Причина в catchAsync, функция createTokens возвращает результат сразу же, несмотря на асинхронный Token.create внутри. После его выполнения запускается res.json, а res.cookie выполняется только потом, после окончания работы Token.create. Это и приводит к ошибке.


Мне непонятно, как catchAsync может вызывать такое поведение. Почему res.status(200).json({ не дожидается окончания await jwtHelper.createTokens(user._id, res)?
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Если посмотреть таки исходник catchAsync (который ровно 5 строк(!)), то видно что он ничего не возвращает, т.е. возвращает undefined и await честно его «ждёт» и идёт дальше.

https://github.com/hoangman1108/catch-async-expres...

Вообще эта «библиотека» предназначена для оборачивания express middleware-й и использование её не по назначению без понимания чревато вот такими глупыми ошибками.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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