首頁 > web前端 > js教程 > 錯誤如何透過 JavaScript Promise 鏈傳播?

錯誤如何透過 JavaScript Promise 鏈傳播?

Linda Hamilton
發布: 2024-12-07 01:21:12
原創
745 人瀏覽過

How Do Errors Propagate Through JavaScript Promise Chains?

鍊式 Promise:理解錯誤傳播

在 Promise 鏈中,每個 Promise 的解決或拒絕都會影響後續的 Promise。然而,有一個常見的誤解,認為錯誤必須始終透過鏈傳播。

Promise 鏈行為

當 Promise 被解決或拒絕時,它會觸發其 then 回調。成功或錯誤處理程序可以傳回一個值或承諾,這將成為鏈中下一個承諾的解決方案。

承諾中的錯誤處理

如果錯誤處理程序在Promise 鏈中不會重新拋出錯誤或返回被拒絕的Promise,則錯誤不會傳播到後續的Promise。這是因為鏈認為錯誤是在該承諾內處理的。

傳播與錯誤處理

在您提供的延遲節點模組範例中,錯誤不是傳播到promise2,因為promise1中的錯誤處理程序不會重新拋出錯誤。透過不重新拋出錯誤,它向鏈發出信號,表明錯誤已被處理。要傳播錯誤,您需要以以下方式修改程式碼:

promise1.then(
  function(wins) { console.log('promise1 resolved'); return wins;},
  function(err) { console.log('promise1 rejected'); throw err;}); // re-throw error
登入後複製

重新拋出錯誤和錯誤處理

重新拋出錯誤是類似的將「錯誤註釋」從John 傳遞給Ginger 再傳遞給Bob。如果 Ginger 處理了錯誤(即不重新拋出錯誤),她仍然可以使用不同的項目(例如,綠色小部件)來滿足 Bob 的請求。這與 Promise 中的錯誤處理並不嚴格是關於傳播錯誤,而是關於減輕其影響的概念一致。

在資料庫範例中,如果初始查詢失敗,第一個 Promise 中的錯誤處理程序鏈應該會重新拋出錯誤以將其傳播到後續的承諾。否則,鏈將認為錯誤已處理並繼續其他插入。

以上是錯誤如何透過 JavaScript Promise 鏈傳播?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板