Open wangsiyuan0215 opened 5 years ago
pipeline: streamlining chained function calls in a readable, functional manner.
pipeline 目前仍然是实验性质的特性,项目中如果想要用到该特性的话,需要使用 babel 的插件 babel/plugin-syntax-pipeline-operator 进行编译;
pipeline
babel/plugin-syntax-pipeline-operator
pipeline 是一种提高数据转换的效率的开发方式,从调用方式、子函数接参方式和功能的角度来说,与 FP 的 flow 相同;
flow
pipeline 与 flow 之间的区别就是 pipeline 的子函数可以返回函数(pipeline 会根据函数返回值类型判断是否继续执行该子函数),而 flow 仅会执行一次子函数(不论子函数是多少阶的函数);
pipeline in babel 具有 3 种提案,分别为 minimal / fsharp / smart:
pipeline in babel
await
placeholder
|> \array_filter($$, $x==> $x % 2 == 0)
$$
|> (_ => add(7, _))
promise |> await
|>
#
fsharp 和 smart 目前 babel 还未支持。
《Let’s experiment with functional generators and the pipeline operator in JavaScript》
pipeline
目前仍然是实验性质的特性,项目中如果想要用到该特性的话,需要使用 babel 的插件babel/plugin-syntax-pipeline-operator
进行编译;pipeline
是一种提高数据转换的效率的开发方式,从调用方式、子函数接参方式和功能的角度来说,与 FP 的flow
相同;pipeline
与flow
之间的区别就是pipeline
的子函数可以返回函数(pipeline
会根据函数返回值类型判断是否继续执行该子函数),而flow
仅会执行一次子函数(不论子函数是多少阶的函数);pipeline in babel
具有 3 种提案,分别为 minimal / fsharp / smart:pipeline
的功能,不包含await
和placeholder
(|> \array_filter($$, $x==> $x % 2 == 0)
中的$$
);placeholder
,但是可以使用箭筒函数替代placeholder
(|> (_ => add(7, _))
即转换为一个单一入参的函数),但是对于await
是支持的,但是在使用方法上有些出入,promise |> await
即在|>
的右边单独使用 await 会等待上一个|>
异步函数执行完毕(一元函数)。placeholder
(使用#
作为占位符,代表上一个|>
执行后返回的结果) 和await
;fsharp 和 smart 目前 babel 还未支持。