Запрос и ответ Lifecyle в узле и экспрессе - PullRequest
0 голосов
/ 14 марта 2019

У меня очень простая настройка маршрута для моего веб-приложения,

router.get('/myTestRoute/:id', async (req: Request, res: Response, next: NextFunction) => {
    await doSomeAsync(req, res);
    res.json({ myObj: 32 });
    return next();
}

doSomeAsync фактически выполняет запрос к службе и занимает до 20 секунд.Однако ответ, который ищет пользователь, не нуждается или не заботится о ответе doSomeAsync, поэтому я подумал, что мог бы удалить await, чтобы он выглядел так:

router.get('/myTestRoute/:id', async (req: Request, res: Response, next: NextFunction) => {
    doSomeAsync(req, res);
    res.json({ myObj: 32 });
    return next();
} 

ВнутриФункция doSomeAsync, после вызова службы, мы ссылаемся на параметры объектов req и res, такие как параметры объекта req и некоторые элементы аутентификации на объект res.

Я обнаружил, что это не работает, и понял, что не до конца понимаю, что происходит с req и res после отправки ответа пользователю.

После того, как явызовите res.json(), а затем next(), что происходит с объектами Request и Response, они сбрасываются?Они меняются каким-либо образом?

Должен ли я рефакторинг doSomeAsync(), чтобы принять примитивные значения из req.params?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...