Compose 函数合成 手写代码
compose 的参数是函数,返回的也是一个函数。除了初始函数(最右侧的一个)外,其他函数的接收参数都是一个函数的返回值,所以初始函数的参数可以是多元的,而其他函数的接收值是一元的。
compose 函数可以接收任意的参数,所有的参数都是函数,且执行方向为自右向左。初始函数一定要放到参数的最右侧。
代码
a(b(c(x))); compose(a, b, c)(x) // 写法一 const reducer = (accumulator, currentvalue) => { return (x) => { return accumulator(currentvalue(x)) } } const reducer = (acc, cur) => x => acc(cur(x)) const compose = func.reduce(reducer) // 写法二 const compose = (...funcs) => { if (!funcs) { return args => args } if (funcs.length === 1) { return funcs[0] } return funcs.reduce((f1, f2) => (...args) => f1(f2(...args))) }
使用场景
Redux -> 中间件 middleware
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论