使用 Promise 鏈進行非同步錯誤處理
使用非同步程式碼時,考慮如何有效處理錯誤至關重要。未捕獲的異常可能會使您的應用程式崩潰,因此制定適當的策略非常重要。
在所描述的場景中,使用拋出錯誤的 setTimeout 來建立 Promise。 Bluebird Promise 的 catch 處理程序不會捕獲此錯誤,因為它發生在非同步回呼中。
Promises 中的異常處理
Promises 可以捕獲在其中拋出的異常他們自己的回調函數。要處理此類錯誤,您可以:
<code class="javascript">function getPromise() { return new Promise(function(done, reject) { setTimeout(done, 500); }).then(function() { console.log("hihihihi"); throw new Error("Oh no!"); }); }</code>
這裡,錯誤在 then 回調中拋出,這確保它會被 Promise 的 catch 處理程序捕獲。
非同步回調的注意事項
記住 Promise 不會捕獲不在其自身權限範圍內的非同步回調的異常,這一點至關重要。要處理這些類型的錯誤,請考慮:
流氓異步回調的處理範例
要在Node.js 或瀏覽器中處理流氓異步回調,您可以使用以下方法:
<code class="javascript">function getPromise() { return new Promise(function(done, reject) { setTimeout(function() { try { // Your rogue async callback here console.log("hihihihi"); } catch (e) { reject(e); } }, 500); }); }</code>
透過手動處理回呼中的任何異常,此方法可確保它們不會使您的應用程式崩潰。
以上是如何處理不在 Promise 範圍內的非同步回呼中的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!