当您不等待 koa 中间件中的 promise 解析时会发生什么?

What happens when you don't wait for for a promise's resolution in a koa middleware?

我正在努力改善我们 API 路线之一的响应时间。

我们向消息队列发出 post 消息请求,目前我们 await 网络请求。

const someMiddlewareFunction = async (ctx, next) => {
    ...
    await postThingToQueue(message_payload)
    ...
    ctx.body = {...}
    return next()
}

如果我们不关心消息是否已发送到队列,那么不 awaiting postThingToQueue 函数会有什么缺点? (我们只是说我们真的不在乎并且已经处理了正确的错误处理)

这完全取决于您希望它如何工作。如果您希望中间件完成并且 Express 继续处理此特定请求的其他请求处理程序而不等待异步操作完成并且您有其他错误处理来处理事情,那么就没有缺点。这有时被称为 "fire and forget" 的异步操作。这不是通常的做事方式,但在某些情况下确实是合适的。

如果你有一个合适的错误处理方案并且不需要请求本身等待排队操作,那么这完全没问题。没有缺点。事实上,有一个好处是可以更快地处理请求,因为它不会被排队操作阻塞。