关于koa2中间件执行顺序问题
我们都知道执行顺序。
开始执行中间件1
开始执行中间件2
结束执行中间件2
结束执行中间件1
我也看了源码, 我迷惑的洋葱模式是怎么从ctx2跳回到ctx1的,也就是这个到过来的顺序怎么跳进去的。从ctx1进入ctx2通过koa-compose很好理解。
1 回复
是不是 先执行第一个中间件(因为compose会默认执行dispatch(0)),该中间件返回 Promise,然后被Koa监听,执行对应的逻辑(成功或失败)在执行第一个中间件的逻辑时,遇到 await next()时,会继续执行dispatch(i+1),也就是执行 dispatch(1),会手动触发执行第二个中间件。 这时候,第一个中间件 await next() 后面的代码就会被 pending,等待 await next() 返回 Promise,才会继续执行第一个中间件 await next() 后面的代码。 后续依次类推?