export default function compose(...fns) {
if (fns.length == 1) {
return fns[0];
}
// 俄罗斯套娃
return fns.reduce((a, b) => (...args) => a(b(...args)));
}
// 老的作者的实现,比较好理解
function composeOld(...fns) {
return function (...args) {
// 拿到最后一个
let last = fns.pop();
fns.reduceRight((prev, next) => {
// 第一次prev = last(...args)
// 这样一层套一层,还是俄罗斯套娃
return next(prev);
}, last(...args))
}
}
function add1(str) {
return str + 1;
}
function add2(str) {
return str + 2;
}
function add3(str) {
return str + 3;
}
let add = composeOld(add3, add2, add1);
let r = add('jason');
console.log(r);
redux中compse的实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 乘着改革开放的浪潮,这段时间我们终于接触到非常火热的前端项目构架React+Redux。 这个构架下的前端项目,最...