把[A, B, C]转换为A(B(C(next)))

115 阅读1分钟

转载子redux

const chain = [A, B, C];
let dispatch = store.dispatch;

chain.reverse().map(middleware => {
    dispatch = middleware(dispatch);
});
const chain = [A, B, C];
// redux
dispatch = compose(...chain)(store.dispatch);


// 实现
function compose(...funcs) {
    if(funcs.length === 1) {
        funcs.reducer((a,b) => (...args) => a(b(...args)))
    }
}