关于koa2中间件执行顺序问题
发布于 7 个月前 作者 NuoHui 686 次浏览 来自 问答

屏幕快照 2019-01-06 下午6.49.37.png

我们都知道执行顺序。

开始执行中间件1
开始执行中间件2
结束执行中间件2
结束执行中间件1

我也看了源码, 我迷惑的洋葱模式是怎么从ctx2跳回到ctx1的,也就是这个到过来的顺序怎么跳进去的。从ctx1进入ctx2通过koa-compose很好理解。

屏幕快照 2019-01-06 下午6.52.17.png

1 回复

是不是 先执行第一个中间件(因为compose会默认执行dispatch(0)),该中间件返回 Promise,然后被Koa监听,执行对应的逻辑(成功或失败)在执行第一个中间件的逻辑时,遇到 await next()时,会继续执行dispatch(i+1),也就是执行 dispatch(1),会手动触发执行第二个中间件。 这时候,第一个中间件 await next() 后面的代码就会被 pending,等待 await next() 返回 Promise,才会继续执行第一个中间件 await next() 后面的代码。 后续依次类推?

回到顶部