我是一名 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
和 mult
。您无需接触原生原型(prototype)即可获得可链接的界面 ^_^
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
关于javascript - 有什么方法可以通过属性访问函数的返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105026/