Promise 建構函式接受定義 Promise 履行邏輯的執行器函式。出現了一個關鍵問題:這個執行器函數是非同步執行還是同步執行?
行為取決於 Promise 本身的實作。然而,Promises 的 ES6 標準明確指出,promise 的實作總是非同步。
參考規範,我們發現執行器函數(在我們的例子中是 y 函數) )確實是同步執行的(參見規範的步驟10)。然而,對 Promise 的 .then() 後續調用,例如 Promise.then(...),總是非同步執行(請參閱「PerformPromiseThen」演算法的步驟 8)。
.then() 呼叫的這種非同步性質有幾個意義:
考慮以下程式碼片段:
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
在在此範例中,y 函數是同步執行的。但是,一旦事件循環完成,.then() 處理程序就會非同步執行。此程式碼的輸出將是:
Result Then handler executed after the synchronous execution of y
以上是Promise 建構函數的執行函數是同步還是非同步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!