函数组合

概括来说,就是接收若干个函数作为参数,返回一个新函数。新函数执行时,按照由右向左的顺序依次执行传入compose中的函数,每个函数的执行结果作为下一个函数的输入,直至最后一个函数的输出作为最终的输出结果。

组合

function compose(...fns){
    return function(rest){
        return fns.reduceRight(function(arg,fn){
            return fn(arg)
        },rest)
    }
}

管道 -> 与组合方向相反

const pipeline = (fns) => {
  return (args) => {
    return fns.reduce((total, current) => {
      return current(total);
    }, args);
  }
}

示例代码

function x(str){
    return str.toUpperCase()
}
function y(str){
    return str.split('')
}
function z(arr){
    return arr.join('-')
}
let fn = pipeline(x,y,z)
fn('zjy') //"Z-J-Y"
posted @ 2020-09-02 17:29  671_MrSix  阅读(151)  评论(0编辑  收藏  举报