async中的next是什么呢?

来源:3-6 Koa 中间件 middlewares

vue不好学

2018-02-26

http://img.mukewang.com/szimg/5a939f640001536f11620334.jpg

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

2
1
慕粉0857218733
mark
2018-11-14
共1条回复

Koa2框架从0开始构建预告片网站

Koa2+MongoDB+Parcel+Puppeteer+AntDesign快速搭建预告片网站

751 学习 · 362 问题

查看课程