我的网络应用程序的路由设置非常简单
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()
之后,请求和响应对象会发生什么情况,它们会重置吗?它们会以任何方式改变吗?
我应该重构doSomeAsync()
来接受req.params
中的原始值吗?