递归写法
异步
app.compose = function() {
function dispatch(index){
const middleware = app.middlewares[index];
if(!middleware) return Promise.resove();
try {
return Promise.resove(middleware(d => dispatch(index + 1)))
} catch(err => {
return Promise.reject(err);
})
}
dispatch(0);
}
reduce写法
app.compose = function() {
return app.middlewares.reduceRight(
(a, b) => Promise.resove(b(a)),
() => Promise.resove()
)
}