最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Express.js:发送响应并执行后台任务

网站源码admin16浏览0评论

Express.js:发送响应并执行后台任务

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()

发布评论

评论列表(0)

  1. 暂无评论