后台任务"/>
Express.js:发送响应并执行后台任务
在Express.js中,我想在发送响应后执行任务。
但是,我希望尽快缩短响应时间。我不需要将此任务的结果返回给客户端,因此我试图立即返回响应。
该任务不占用大量CPU,因此该任务未锁定事件循环。
所以,这是我的后台任务:
function backgroundTask() {
return new Promise(resolve => setTimeout(() => {
console.log("backgroundTask finished");
resolve();
}, 1000));
}
我的第一次尝试是直接调用backgroundTask函数:
app.post('/messages', async function (req, res) {
res.status(200).send({ success: true });
performBackgroundTasks();
});
第二个尝试是将backgroundTask函数调用到setTimeout()中:
app.post('/messages', async function (req, res) {
res.status(200).send({ success: true });
setTimeout(() => performBackgroundTasks(), 0);
});
问题是:确保响应发送到客户端并且后台执行任务的最佳方法是什么?
注意:我知道“最佳方法”是使用工作线程,但我只需要一种简单的方法即可执行后台任务。
回答如下:您可以将函数转换为中间件,并在响应后调用next()
更多推荐
Express.js:发送响应并执行后台任务
发布评论