Compose 函数合成 手写代码

发布于 2023-08-28 21:07:15 字数 725 浏览 47 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

狠疯拽

暂无简介

0 文章
0 评论
288 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文