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。 這個構架下的前端項目,最...