实现概要:
app.use把函数索引压栈;
所有的中间件都放在同一个中间件数组中;
koa-compose的作用:
1、闭包里定义局部函数dispath函数,负责每个中间件传入next实参函数
2、next()函数中,通过中间件数组索引,定位到下一个中间件
3、第一个中间件调用在compose中使用dispatch(0),后面的中间件函数调用,直接是通过传入的next()里直接dispatch(下一个)
4、异步兼容直接添加async/await
启发:
dispatch定义在compose内部。所以函数如何只是在局部使用,尽量利用内包定义,避免所有函数都在全局作用域。
next在dispath传入next函数实参,从而通过下一个函数索引调用下一个函数。所以进行函数封装时,可以通过函数参数简化外层函数代码量,同时通过条件判断,确认是否执行该传入的逻辑,即代码逻辑叠加。也可以仿照next原理实现数组下一个元素有条件调用,而不只是for遍历思想。