Node.js 关于koa2中的异步/等待

Node.js 关于koa2中的异步/等待,node.js,async-await,koa,ecmascript-2017,Node.js,Async Await,Koa,Ecmascript 2017,我在koa2中使用async/await,如下所示 const Koa = require('koa'); const app = new Koa(); app.use(async (ctx, next) => { await next() console.log("1------>"+Date.now()) }); app.use(async (ctx, next) => { await next() console.log("2------>"+D

我在koa2中使用
async/await
,如下所示

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx, next) => {
  await next()
  console.log("1------>"+Date.now())
});

app.use(async (ctx, next) => {
  await next()
  console.log("2------>"+Date.now())
});

app.use(async (ctx, next) => {
  await next()
  console.log("3------>"+Date.now())
});

app.use(async (ctx, next) => {
  await next()
  console.log("4------>"+Date.now())
});

app.listen(3000);
运行这个代码,我会得到这样的日志

4------>1526575713792
3------>1526575713794
2------>1526575713795
1------>1526575713795
下面是我的问题

  • app中的
    next
    是什么。使用(async(ctx,next)
    ,它是函数吗

  • wait next()
    在每个
    应用程序中。使用
    函数意味着
    等待,请运行下一个应用程序。首先使用
    ,如果没有下一个
    应用程序。使用
    ,忽略它,然后在最后一个
    应用程序中运行代码。使用
    函数,对吗

  • 如果我将第一个
    app.use
    更改为
    app.use(async(ctx)=>{console.log(“1----------->”+Date.now())});
    ,然后运行它,结果只有一条记录
    1----------->1526576945380
    。我认为第二个
    app.use
    函数将继续运行,我将得到这样的结果

    4------>1526575713792
    3------>1526575713794
    2------>1526575713795
    1------>1526575713795
    
    1------->1526576945360

    4----->1526575761869

    3----->1526575761869

    2------->1526575761869

  • 那么,有人能帮我吗?帮我解释一下吗?非常感谢

  • next
    是一个函数,
    console.log(typeof next)
    会向您显示这一点
  • <膝关节炎> >调用> <代码>下< /C> >将指示KOA执行使用“代码> >使用< /COD>注册的下一个中间件,并在下一个中间解决方案返回时返回一个承诺,在<<代码>前面的前面的代码<等待> <代码> >您的代码将在那里等待,直到该解决方案得到解决。 <> LI>为什么你认为下一个中间件使用了<代码>使用了< /C> >?你不调用<代码>下< /C> >,你在这个中间件中终止。<代码> AsAs/<代码>是一个JS功能,等待一个解决方案。<代码> NeX/COD>是执行下一个中间件的膝关节炎功能。
  • next
    是一个函数,
    console.log(typeof next)
    会向您显示这一点
  • <膝关节炎> >调用> <代码>下< /C> >将指示KOA执行使用“代码> >使用< /COD>注册的下一个中间件,并在下一个中间解决方案返回时返回一个承诺,在<<代码>前面的前面的代码<等待> <代码> >您的代码将在那里等待,直到该解决方案得到解决。 <> LI>为什么你认为下一个中间件使用了<代码>使用了< /C> >?你不调用<代码>下< /C> >,你在这个中间件中终止。<代码> AsAs/<代码>是一个JS功能,等待一个解决方案。<代码> NeX/COD>是执行下一个中间件的膝关节炎功能。
    我明白了,非常感谢你,对于你的第三个答案,我没有期望,我认为所有的
    应用程序。如果没有
    等待下一个
    ,则将有序调用use
    。我明白了,非常感谢你,对于你的第三个答案,我没有期望,我认为所有的
    应用程序。use
    将有序调用如果没有
    等待下一步
    ,则选择此方式。