在 Promise 鏈中,Promise 的解析取決於其錯誤處理函數如何回應拒絕。 .then() 方法為回呼函數的結果傳回一個新的 Promise。如果沒有提供成功或錯誤處理程序,結果將直接傳遞給下一個 Promise。
如果處理了錯誤,則產生的 Promise 將使用錯誤處理程序的傳回值來實現。要重新拋出錯誤並將其傳播到鏈上,請改為拋出 err。
在小部件商店範例中,當鏈中的 Promise 收到錯誤時,它應該向前拋出該錯誤,以確保後續的 Promise該鏈不會收到成功值。
在資料庫查詢鏈中,如果第一個查詢中發生錯誤,省略錯誤處理程序將允許鏈繼續,即使後續的Promise 可能不會收到
db.query({ parent_id: value }).then(function(query_result) { return db.put({ parent_id: query_result[0].parent_id }); }).then(function(first_value_result) { return db.put({ reference_to_first_value_id: first_value_result.id }); }.then(values_successfully_entered);
總之,為了防止鏈中的後續Promise 在發生拒絕後接收成功值,錯誤處理函數應該拋出錯誤或傳回被拒絕的Promise。
以上是鍊式 Promise 如何處理和傳播拒絕?的詳細內容。更多資訊請關注PHP中文網其他相關文章!