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

JavaScript 中 Promise 處理程序的執行順序是什麼?

Susan Sarandon
發布: 2024-10-24 17:42:02
原創
723 人瀏覽過

What is the Execution Order of Promise Handlers in JavaScript?

理解 Promise 執行順序

在 JavaScript 中,promise 用來處理非同步操作。 Promise 處理程序的執行順序可能會令人困惑,尤其是當存在巢狀 Promise 時。

程式碼的逐行分析

讓我們分析一下提供的程式碼行逐行了解執行順序:

  • 第1 行: 建立一個立即解析為'A' 的Promise 並為其附加一個.then() 處理程序。
  • 第 2 行: 當 Promise 解析為「A」並傳回「B」時,控制台記錄「2」。
  • 第 5 行:另一個.then() 處理程序被加入到第 1 行所建立的 Promise 中。
  • 第6-8 行: 建立一個解析為“C”的新Promise 並附加兩個.then() 處理程序該控制台分別記錄“7”和“8” 。
  • 第 10 行:控制台記錄「3」並傳回「B」。
  • 第 12 行- 14: 另一個 .then() 處理程序被加入到第 5 行所建立的 Promise 中。
  • 第 15-17 行: 建立一個解析為「D」並附加的新 Promise兩個 .then() 處理程序分別控制台記錄「9」和「10」。
  • 第 19 行:控制台記錄「4」。
  • 第 22 行-24: 另一個 .then() 處理程序被加入到第 12 行所建立的 Promise 中。
  • 第 27 行: 當 Promise 解析時,控制台記錄「5」。

執行順序

  1. 第1 行: Promise 已解決,控制台記錄「2 A」
  2. 第10 行: 控制台日誌「3 B」
  3. 第19 行: 控制台日誌「4 B」
  4. 第27 行: 控制台日誌「5 未定義」
  5. 第7 行: 控制台日誌「7 C」
  6. 第8 行: 控制台日誌「8 未定義」
  7. 第15 行: 控制台記錄「9 D」
  8. 第17 行: 控制台記錄「10 undefined」
  9. 第30 行: 控制台日誌「1」
  10. 第33 行: 控制台日誌「6」

討論

  • Promise 處理程序是非同步調度的,因此它們會在目前執行執行緒完成後執行。
  • 巢狀的 Promise 會建立沒有預定執行順序的獨立 Promise 鏈。
  • 的順序Promise 的執行取決於 Promise 引擎的實作。在這種情況下,引擎在巨集任務 (setTimeout()) 之前使用調度微任務(promise 處理程序)。
  • 不建議依賴巢狀 Promise 的特定執行順序。相反,鏈承諾明確控制其執行順序。

以上是JavaScript 中 Promise 處理程序的執行順序是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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