compose 和 pipe 函数
为什么需要 compose 或 pipe 函数
我们在进行函数式编程时,会遇到一些问题,比如:
- 值的传递,写起来不方便。即连续执行一系列函数,且需传递计算某个值
- 连续调用写起来较为麻烦
compose 函数
为了方便连续执行方法,把自己调用传值过程封装起来,只需给 compose 函数需要执行的方法,就会自动执行
- 从右往左执行
- 一个函数的返回值作为下一个要执行函数的参数
const compose = (...args) => payload => {
let _result = payload
for (let i = args.length - 1; i >= 0; i -= 1) {
_result = args[i](_result)
}
return _result
}
const compose = (...args) => payload => args.reduceRight((pre,cur) => cur(pre), payload)
redux 的 compose 实现:
pipe 函数
功能同 compose 函数,从左往右执行
const compose = (...args) => payload => args.reduce((pre,cur) => cur(pre), payload)