当您不等待koa中间件中的诺言解决方案时,会发生什么?

时间:2019-07-09 22:20:29

标签: node.js es6-promise koa2

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

我们提出了几个将消息发布到消息队列的请求,目前我们await是网络请求。

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

如果我们不关心消息是否发送到队列,那么不await不使用postThingToQueue函数会有什么弊端? (只是说我们真的不在乎,已经采取了适当的错误处理措施)

1 个答案:

答案 0 :(得分:1)

如何工作完全取决于您。如果您希望完成中间件,并且Express可以继续处理此特定请求的其他请求处理程序,而无需等待异步操作完成,并且您还有其他可以处理问题的错误处理,则没有任何缺点。有时将其称为“即发即弃”的异步操作。这不是通常的方法,但是在某些情况下当然是合适的。

如果您具有适当的错误处理方案,并且不需要请求本身等待排队操作,那么这很好。没有缺点。实际上,可能存在上行空间,因为请求不会被排队操作阻止,因此可以更快地处理请求。