函数式是一种很好用的编程方式,使用函数式编程一开始可能还不是很习惯,但在你习惯之后会发现这能帮你编写出简洁且充满表达能力的代码。下面介绍一下,日常开发中运用函数式的一些技巧以及函数式的原理。
compose
1 | compose(...fns) |
compose基本是大部分函数式都会用到的函数,他的作用是把传入的方法从右往左,把前一个的返回值返回给下一个,redux的中间件就是基于compose实现的。
源码
compose 的源码也比较简单,但是思维方式可能会比较绕。简单来说就是通过reduce让函数一层一层嵌套,传进的函数会嵌套在最里面,所以会最先执行。
1 |
|
常见的用法,除了有reduce这种中间件的用法外,还可以是比方说我们有几个步骤,每个步骤需要把上一个步骤的值传进来,我们就可以利用compose来简化我们的写法。
1 |
|
cancellable
开发中可能会碰到这样的需求,需要让一些函数变成可取消的。这部分的逻辑其实是可以复用的。下面看看可以如何去实现这样一个功能。
1 |
|
concurrent
用来控制函数并发量。
1 | function concurrent(count, fn) { |
retryable
碰到错误就重试
1 |
|
结合
稍微改造一下,我们就可以通过compose来结合上面几个函数最终生成一个功能强大的request
1 | const cancellable = (cancelPromise) => (fn) => { |