2017-04-26 42 views
2

在它說Promises/A+ spec (section 3)在這方面什麼是蹦牀?

由於承諾的實現被認爲是平臺的代碼,它可能 本身包含一個任務調度隊列或「蹦牀」,其中 處理程序被調用。

在這方面什麼是蹦牀?

+1

[Wikipedia解釋](https://www.wikiwand.com/en/Trampoline_(computing)#/ High-level_programming)*一個蹦牀是一個循環,迭代地調用[thunk](https:// www。 wikiwand.com/en/Thunk_(functional_programming)) - 返回函數([continuation-passing style](https://www.wikiwand.com/en/Continuation-passing_style))*。 – sp00m

+0

JavaScript事件循環是蹦牀嗎?我想我的問題是:爲什麼在Promise/A +規範中提到似乎是一個實現細節?在這種情況下,蹦牀有特殊的意義嗎? – Ben

+1

[這是一個蹦牀的例子](https://github.com/bergus/F-Promise/blob/master/src/continuations.js#L23-L27)在一個非常複雜(因此被放棄)的承諾實現中。 – Bergi

回答

0

蹦牀是一種控制結構,它可以實現遞歸邏輯,同時避免沒有尾部呼叫優化的基於堆棧的語言的限制。

嵌套承諾鏈的遞歸性質本身就是一個承諾實現的遞歸解決方案。

因此,蹦牀在Promise/A +規範中被認爲是一種常用的實現方法,儘管在某些語言中蹦牀沒有必要或實際上可能不是最優的。

例如,ES2015在JavaScript中引入了尾部呼叫優化,使得(用戶至少)蹦牀成爲可能,不再需要蹦牀。 Promise/A +規範是在ES2015年前寫成的。