// middlewares[fn,fn,fn] 使用use的时候加进来的
compose(middlewares,ctx){
function dispatch(index){ // 取出一个中间件执行
if(index === middlewares.length) {
return Promise.resolve()
}
// Promise.resolve() 为了保证返回的是一个promise,如果用户调用next前面必须加await否则不会等待
// next函数 ()=> dispatch(index+1)
return Promise.resolve(middlewares[index](ctx,()=> dispatch(index+1)))
}
return dispatch(0)
}