Compose

最近研究Strapi 源码,偶尔看到request-compose这个包,看到一个很简单很有用的compose方法的实现。

compose(...fns)(args),这个是compose方法的使用形式,它的目的是将某个参数按顺序依次传递给每个方法,前一个方法的返回是第二个方法的参数。它的难点是,这些方法可能是同步异步混合在一起的。话不多说,直接看源码

Compose的简易实现

const ctor=()=>
    (...fns)=>
        (args)=>fns.reduce((pre,cur)=>pre.then(cur),Promise.resolve(args))

它的妙处是利用了Promise,完美实现了同步异步的兼容。

posted @ 2024-05-20 20:08  kongshu  阅读(5)  评论(0编辑  收藏  举报