通過原始碼理解thunk執行原理

2021-10-10 21:54:48 字數 1148 閱讀 1996

​ 1)函式的柯里化(函式返回函式返回函式·····)其實是乙個在連綴呼叫時不停收集變數和資料的過程,同時使用閉包將收集到的變數進行儲存。這麼做可以使函式由複雜的多入單出變成簡單的單入單出的狀態,同時也可以做到將引數進行復用和函式延遲執行的功能

​ 2) redux的中介軟體的位置,位於資料傳入redux後,redux執行反應變更(dispatch)之前,資料要穿過中介軟體才能真正進入並執行redux相關操作

function

createthunkmiddleware

(extraargument)

)=> next => action =>

// 如果外部函式的返回值是乙個物件就會將值傳遞下去,進入下一步

return

next

(action);}

;}const thunk =

createthunkmiddleware()

;thunk.withextraargument = createthunkmiddleware;

export

default thunk;

function

dispatch

(action)

····

}

function()

return

function

(createstore)

;var middlewareapi =};

var chain = middlewares.

map(

function

(middleware));

_dispatch = compose.

(void

0, chain)

(store.dispatch)

;return

_objectspread2

(, store,);

};};

}

​ 知道了上面的所有之後,結論已經出來了,thunk是乙個將非同步操作(如資料請求等)從react元件中轉移到中介軟體中執行的redux中介軟體,可以將元件的**變得更簡潔單純(因為將複雜的非同步請求資料交給了中介軟體執行,可以讓元件專注於頁面的各種操作而不必分心去考慮資料**的事)

co原始碼分析 thunk版本3 1 0

co的thunk版本,就是將所有 函式,generator,generator function,object,array,promise,都轉換為thunk函式,在thunk函式的 中,切換外部包裝的generator的狀態,即呼叫next方法,來依次執行所有的非同步任務。其中的,object和a...

原 distcc原始碼研究四

在 distcc原始碼研究三 中我提到dcc build somewhere timed函式,認為是在這個函式裡建立編譯程序中。那麼我們就看看這個函式是如何建立編譯程序的。dcc build somewhere timed函式裡面主要呼叫dcc build somewhere函式。下面我們仔細剖析下...

python原始碼理解

1,一切都是物件 2,typedef struct objectpyobject pyobject是不可變長度的物件 3,typedef structpyvarobject 可變長度的物件 4,每乙個物件都對應乙個型別物件 pytype type 5,每乙個物件都有乙個引用計數器 6,在python...