Future與promise

在計算機科學中 ， future 、 promise 、 delay和deferred是指用於在某些併發編程語言中同步程序執行的構造 。 由於某些計算 （ 或者網絡請求 ） 尚未結束 ， 我們需要一個對象來代理這個未知的結果 ， 於是就有了上述這些構造 （ future 、 promise等 ） 。 “ promise ” 一詞由丹尼爾 · 福瑞得曼和David Wise在1976年提出 ， Peter Hibbard稱之爲 “ eventual ” 。 1977年Henry Baker和Carl Hewitt在一篇論文中介紹了一個類似的概念 “ future ” 。 術語 “ future ” 、 “ promise ” 、 “ delay ” 和 “ deferred ” 通常可以互換使用 ， 而 “ future ” 與 “ promise ” 之間的使用差異 ， 我們將在下面討論 。 具體來說 ， 當區分使用時 ， future是變量的 “ 只讀 ” 佔位符視圖 ， 而promise是可寫的單賦值容器 ， 用於設置future的值 。 值得注意的是 ， 無須指定可以設置其值的promise就可以定義future ， 並且不同的promise可以設置同一個future的值 ， 儘管對於給定的future僅可以執行一次 。 在其他情況下 ， future和promise是一起創建的 ， 並且相互關聯 ： future是值 ， promise是設定值的函數 — — 本質上是異步函數 （ promise ） 的返回值 （ future ） 。 設置future的值的過程也稱爲 “ resolve ” （ 解析 ） 、 “ fulfil ” （ 實現 ） 或 “ bind ” （ 綁定 ） 它 。