const fn1 = x => x + 3
const fn2 = x => x * 2
const fn3 = y => y / 5
function compose(resolveLoaders) {
if (resolveLoaders.length === 0) return x => x
if (resolveLoaders.length === 1) return x => resolveLoaders[0](x)
// 实现方案1
return resolveLoaders.reduce((pre, cur) => {
return content => pre(cur(content))
})
// 实现方案2
// return resolveLoaders.reduce((a, b) => (...args) => a(b(...args)))
}
- componse函数意思就是一个函数的返回值是另一个函数的参数,如此反复
- 以上两种方式都是实现方式,其实方案2是redux实现方案,个人觉得代码很精简,值得学习