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,完美实现了同步异步的兼容。