首頁 > web前端 > js教程 > 主體

Promise 建構函數的執行函數是同步還是非同步?

Patricia Arquette
發布: 2024-10-30 12:06:26
原創
429 人瀏覽過

 Is the Promise Constructor’s Executor Function Synchronous or Asynchronous?

非同步執行 Promise 建構函式回呼

Promise 建構函式接受定義 Promise 履行邏輯的執行器函式。出現了一個關鍵問題:這個執行器函數是非同步執行還是同步執行?

詳細答案

行為取決於 Promise 本身的實作。然而,Promises 的 ES6 標準明確指出,promise 的實作總是非同步。

參考規範,我們發現執行器函數(在我們的例子中是 y 函數) )確實是同步執行的(參見規範的步驟10)。然而,對 Promise 的 .then() 後續調用,例如 Promise.then(...),總是非同步執行(請參閱「PerformPromiseThen」演算法的步驟 8)。

意義

.then() 呼叫的這種非同步性質有幾個意義:

  • 如果執行器函數會修改任何變數或執行任何副作用,這些更改可能不會立即對.then( ) 處理程序。
  • .then() 處理程序可用於安排應在目前事件循環完成後執行的任務。
  • 這種非步行為確保Promise 可用於連結多個非同步

範例程式碼

考慮以下程式碼片段:

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!