第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

redux里compose函數(shù)源碼看不太懂

redux里compose函數(shù)源碼看不太懂

胡子哥哥 2019-03-21 18:15:07
下面是Redux里compose方法源碼:export default function compose(...funcs) {  if (funcs.length === 0) {    return arg => arg  }  if (funcs.length === 1) {    return funcs[0]  }  const last = funcs[funcs.length - 1]  const rest = funcs.slice(0, -1)  return (...args) => rest.reduceRight((composed, f) => f(composed), last(...args))}希望能得到各位詳細(xì)的解析,謝謝
查看完整描述

3 回答

?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

沒有看過redux源碼,不過看得懂這個(gè)compose函數(shù),現(xiàn)在來說說:


首先 compose 傳入的是一串不確定個(gè)數(shù)的function 作為參數(shù),參數(shù)個(gè)數(shù)大于或者等于2,其實(shí)執(zhí)行過程的是調(diào)用一串function隊(duì)列,從右向左調(diào)用,從執(zhí)行compose方法來說明:


compose(fn1 ,fn2, fn3, ...fn[n-2],fn[n-1],fnn)(...args) ;   

上面的執(zhí)行過程等價(jià)于:


 

 fn1(fn2(......(fn[n-2](fn[n-1](fnn(...args))))))


再說的清楚點(diǎn)就是:


 compose(a,b,c,d)(...args) = a(b(c(d(...args))))


樓主去看看Array的原生方法reduce 和 reduceRight,就很快能理解了。


今天去看了一下redux源碼,發(fā)現(xiàn)寫法已經(jīng)變了,最后一步變成了


 return funcs.reduce((a, b) => (...args) => a(b(...args)))

其實(shí)執(zhí)行過程還是跟上面的一樣,只是寫法不同而已


查看完整回答
反對 回復(fù) 2019-04-08
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

了解一下Array的reduce函數(shù)就好理解了


查看完整回答
反對 回復(fù) 2019-04-08
  • 3 回答
  • 0 關(guān)注
  • 504 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號