// 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) }