Thunk 函數(shù)的小例子

var thunk = function () {
return x + 5;
};

function f(thunk){
return thunk() * 2;
}
編譯器的"傳名調(diào)用"實現(xiàn),往往是將參數(shù)放到一個臨時函數(shù)之中,再將這個臨時函數(shù)傳入函數(shù)體。這個臨時函數(shù)就叫做 Thunk 函數(shù)。

function run(fn) {
var gen = fn();

function next(err, data) {
var result = gen.next(data);
if (result.done) return;
result.value(next);
}

next();
}

run(gen);

上面代碼的 run 函數(shù),就是一個 Generator 函數(shù)的自動執(zhí)行器。內(nèi)部的 next 函數(shù)就是 Thunk 的回調(diào)函數(shù)。 next 函數(shù)先將指針移到 Generator 函數(shù)的下一步(gen.next 方法),然后判斷 Generator 函數(shù)是否結(jié)束(result.done 屬性),如果沒結(jié)束,就將 next 函數(shù)再傳入 Thunk 函數(shù)(result.value 屬性),否則就直接退出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 異步編程對JavaScript語言太重要。Javascript語言的執(zhí)行環(huán)境是“單線程”的,如果沒有異步編程,根本...
    呼呼哥閱讀 7,408評論 5 22
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,140評論 2 17
  • title標(biāo)題: A Web Crawler With asyncio Coroutinesauthor作者: A...
    彰樂樂樂樂閱讀 2,221評論 0 8
  • 在此處先列下本篇文章的主要內(nèi)容 簡介 next方法的參數(shù) for...of循環(huán) Generator.prototy...
    醉生夢死閱讀 1,488評論 3 8
  • 前段時間彬哥問我能不能寫一些高中的事情。我說可以,以后會寫的。想了很久我決定開始寫一些回憶性的故事。 不知道是哪天...
    序文軒閱讀 2,530評論 0 5

友情鏈接更多精彩內(nèi)容