在res.send in Express之后处理异步调用有什么问题

在res.send in Express之后处理异步调用有什么问题,express,asynchronous,Express,Asynchronous,我被告知,执行在处理Express请求期间触发但在res.send之前未完成的任何操作是不正确的。例如,发送推送通知或在数据库中保存项目,而不等待其最终分析。如果这句话正确,在这种情况下会发生什么 示例代码(假设我们不需要任何验证或其他任何东西,也不关心异步操作的结果,只是为了演示我的意思): 因为保存操作(或任何其他操作)可能由于某种原因而失败,在这种情况下,您可能希望客户端获得错误。 如果在保存操作完成之前向客户端发送响应,则由于响应已发送且连接已关闭,因此无法向客户端发送响应。,因为保存操

我被告知,执行在处理Express请求期间触发但在
res.send
之前未完成的任何操作是不正确的。例如,发送推送通知或在数据库中保存项目,而不等待其最终分析。如果这句话正确,在这种情况下会发生什么

示例代码(假设我们不需要任何验证或其他任何东西,也不关心异步操作的结果,只是为了演示我的意思):


因为保存操作(或任何其他操作)可能由于某种原因而失败,在这种情况下,您可能希望客户端获得错误。
如果在保存操作完成之前向客户端发送响应,则由于响应已发送且连接已关闭,因此无法向客户端发送响应。

,因为保存操作(或任何其他操作)可能会因某种原因失败,在这种情况下,您可能希望客户端出现错误。
如果您在保存操作完成之前向客户端发送响应,您将不可能告诉客户端,因为响应已发送且连接已关闭。

谢谢,我知道这一点。但想象一下,我们不关心结果。也就是说,如果它保存或失败,一切正常。问题主要是关于全科医学。谢谢,我知道。但想象一下,我们不关心结果。也就是说,如果它保存或失败,一切正常。问题主要是关于一般做法。
router.get('/push', async (req, res) {
  const data = req.body;

  // Three lines below are async actions     
  db.save(req.body);                                    // Do not await here
  push.send(req.body.device, 1);                        // Do not await here
  remoteLogger.info('received push request', req.body); // Do not await here

  res.status(200).send('ok');
})