总字数 425
预计阅读时间 1 分钟
管道处理是一种比较常见的api设计方式,意思是上一步的执行结果作为下一步的入参
顺序执行
如果我们需要在JS中实现这一点
当然可以这样做
1 | func1(func2(func3(arg))) |
首先这样代码很难看,其次是这样嵌套的代码调用是固定的,没有做到动态的函数式编程
基本形式
如果要实现一个管道,可以这样做
1 | // pipe函数的参数接受若干个参数, 都是Function类型 |
上面是使用reduce
作用是正序执行,如果要逆序执行可以使用reduceRight
调用示例
1 | const func1 = value => { |
异步函数
如果输入的函数是异步的,或者同步异步都有呢
那么函数的返回结果就不能立刻拿到了
1 | const pipeAsync = (...funcs) => { |
区别就是不管函数是不是异步的,都当做异步处理,作为then的回调函数
调用示例
1 | const func4 = async value => { |