async中的next是什么呢?
来源:3-6 Koa 中间件 middlewares

vue不好学
2018-02-26
async中的next是什么呢?是哪里提供的呢?是es7自带的码
写回答
1回答
-
丶业精于勤
2018-02-26
不是自带的, 是通过执行next()函数向下传递到其他中间件, 原理是3-7小节的koa-compose, 这个函数scott老师也在课程中讲到, 它会返回一个函数,该函数会在application中被执行,执行后会一直递增i来执行每个中间件,并且包裹成Promise,每次都传入next()函数
/** * await next()实际执行的是下一个中间件,因为是Promise异步的 * 所以await会等待下一个中间件返回的结果,从而实现尾递归 */ return Promise.resolve(fn(context, function next() { return dispatch(i + 1) }))
也可以去看看我写的源码分析, 希望可以帮助你
https://github.com/lhz960904/compose/blob/master/index_cq.js
212018-11-14
相似问题