我是一名 JS 开发人员,正在尝试函数式编程思想,我想知道是否可以按照 Promise 链的编写方式使用链来实现同步函数。
例如:
function square (num) {
return num * num;
}
let foo = 2
let a = square(foo) //=> 4
let b = square(square(foo)) //=> 16
很公平,但我想做的(通常是为了使代码解析更容易)是通过将其作为链的第一个参数传递来将这些方法链接在一起。这样这样的事情就可以工作:
let c = square(foo)
.square()
.square() //=> 256
有没有办法用普通的 javascript 来做到这一点,或者这是我必须修改 Function.prototype 才能做到的事情?
您可能对 Identity 函子感兴趣 - 它允许您提升任何函数来对 Identity 的值进行操作 - 例如,square
and mult
以下。您无需接触原生原型即可获得可链接的界面 ^_^
const Identity = x => ({
runIdentity: x,
map: f => Identity(f(x))
})
const square = x => x * x
const mult = x => y => x * y
let result = Identity(2)
.map(square)
.map(square)
.map(square)
.map(mult(1000))
.runIdentity
console.log(result)
// 256000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)