发送响应并继续执行任务Express | Node.js

14 浏览
0 Comments

发送响应并继续执行任务Express | Node.js

在 Node.js 中(我刚接触),我正在尝试在收到响应后执行一系列任务。然而,我希望尽快返回响应时间。我不需要将这些任务的结果返回给客户端,所以我正在尝试立即返回响应。

我的当前实现大致如下:

var requestTime = Date.now; 
app.post('/messages', function (req, res) {
  console.log("收到请求");
  // 处理响应
  var body = res.body;
  res.send('成功');
  res.end();
  console.log("发送响应");
  performComplexTasks(body)
})
function performComplexTasks(body){
   // 在此处处理 body 数据;
   console.log("完成任务:", Date.now()-requestTime, "毫秒");
}
// -------日志-----------
//    收到请求
//    POST /api/messages 200 3.685 ms - 59
//    发送响应
//    完成任务:2500 毫秒

发出请求的客户端似乎会在 performComplexTasks() 完成之前挂起。(POST 在 3.685 毫秒内完成,但响应需要 2500 毫秒才能完成。)

有没有办法立即发送响应并完成其他任务,而不会让客户端等待/挂起?(在我的情况下,客户端无法进行多个 API 调用。)

0