Promise 構造函數回呼的同步性
在Promise 構造的上下文中,您可能想知道提供給Promise 的回調的執行時序構造函數。讓我們詳細探討這個問題。
考慮以下程式碼片段:
function doSomethingAsynchronous() { return new Promise((resolve) => { const result = doSomeWork(); setTimeout(() => { resolve(result); }, 100); }); }
建構此 Promise 時,何時呼叫 doSomeWork()?
根據ECMAScript規範,執行器函數(提供給建構函數的回呼)被同步呼叫基於承諾建設。這意味著 doSomeWork() 將在 Promise 建立時立即執行,然後回調繼續執行。 MDN 是這樣規定的:
執行器被同步呼叫(一旦 Promise 被建構),以resolveFunc 和rejectFunc 函式作為參數。
執行器呼叫的同步本質是由規範保證。例如,當使用 all 或 race 組成多個 Promise 時,以及當執行器具有同步副作用時,此保證是相關的。
以上是Promise建構函式的回呼什麼時候執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!