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);