为了响应对端点的 http 请求,我基本上必须进行一些计算、数据库调用等并将响应返回给请求者。在发送响应之后可以进行一些计算,对于我来说,尽可能快地返回响应是有意义的。
从我在 ASP.NET 中看到的情况来看,一旦您返回响应,整个请求-响应周期就结束了。在不使用作业队列系统或类似的东西的情况下,我需要基本代码来实现吗?在发回响应之前,我已经研究过使用Task
并触发异步操作,但从我一直在阅读的内容来看,它可能很危险,系统可能会随机终止进程等。
我非常习惯于节点/表达,我正在尝试做相当于:
router.get('/myroute', executeStuff, returnResponse, executeStuff2);
// initial processing
executeStuff = (req, res, next) => {
someAsyncOperation()
.then(() => next())
.catch(...);
}
// send response after necessary stuff is done
returnResponse = (req, res, next) => {
res.send(responseBody);
next();
}
// do the after response processing, side effects, etc.
executeStuff2 = (req, res, next) => {
someAsyncOperation()
.then(() => {
// end of the chain
})
.catch(...);
}