在Koa中,中间件中的await next(),返回await next(),returnnext()和next()之间有什么区别?

时间:2019-04-06 18:02:10

标签: javascript node.js promise async-await koa

文档概述了在中间件中使用“ await next()”的用例,使中间件暂停并触发下游的下一个中间件,直到所有中间件执行完毕为止,此时上游级联将开始并且中间件将完成执行。而且,如果用户希望缩短级联,则仅编写“ return”将一起削减级联。

我不明白的是,如果用户返回以下内容之一,将会发生什么:

{
    "Data" : value
}

在第一个示例中,我认为它将暂停,触发下一个中间件,但不会完成向上级联的执行。

在第二个示例中,我认为下一个中间件将与console.log一起触发,我不认为它会向上触发吗?

在第三个示例中,我认为将触发下一个中间件,但不会触发向上级联的控制台日志,与第一个示例相同。

我的想法正确吗?我正在写一个koa应用程序,想了解更多有关其局限性的信息,但我发现这一领域我不清楚。

1 个答案:

答案 0 :(得分:2)

exampleMiddleware1 exampleMiddleware3 是相同的(无需返回等待状态)

  • 您的console.log将永远不会被调用

exampleMiddleware2

  1. 如果下一个中间件返回承诺

    • 您的console.log将在不等待下一个中间件熏蒸的情况下调用
  2. 如果下一个中间件返回承诺

    • 它将先完成下一个中间件,然后完成console.log