У меня очень простая настройка маршрута для моего веб-приложения,
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
?