组合函数 compose 就是传入一些函数。对于传入的函数,我们要求一个函数只做一件事。该函数调用的方向是从右至左的。
// 通过组合计算字符串单词个数
let splitIntoSpaces = (str) => str.split(" "); // 分割成数组
let count = (array) => array.length; // 计算长度
const countWords = compose(count, splitIntoSpaces);
countWord("hello your reading about composition"); // 5
compose的实现方式:
const compose = (...args) => x => args.reduceRight((res, cb) => cb(res), x);
管道和组合的概念很类似,都是串行处理数据。唯一区别就是执行方向:组合从右向左执行,管道从左向右执行。
// 通过管道计算字符串单词个数
let splitIntoSpaces = (str) => str.split(" "); // 分割成数组
let count = (array) => array.length; // 计算长度
const countWords = pipe(splitIntoSpaces, count); // 注意此处的传参顺序
countWord("hello your reading about composition"); // 5
pipe实现方式:
const pipe = (...args) => x => args.reduce((res, cb) => cb(res), x)