天天看點

JavaScript異步程式設計4——Promise錯誤處理

論述了promise如何進行錯誤處理。

目錄

1. 概述

2. 詳論

3. 參考

在上一篇文章《javascript異步程式設計3——promise的鍊式使用》中,通過promise的鍊式使用,避免程式中多次嵌套回調(回調地獄)。根據前面的文章我們可以知道,promise是基于狀态的,成功/失敗的狀态會分别去處理相應的回調函數。一般而言,失敗的狀态我們希望能夠捕獲它,将它像異常(error)一樣處理。

promise的then()方法有兩個參數,一個是成功的回調函數,一個是失敗的回調函數。可以将失敗的回調函數這個參數省略掉,而使用promise的catch()方法,捕獲失敗的異常。例如,我們把上一篇文章中的例子改進一下:

改進前與改進後的程式處理流程很相似,但是還是有細微的差别。前者通過promise的then()處理異常,隻會運作功能的回調函數和失敗的回調函數其中的一個;後者通過catch()處理異常,則更加像javascript的try/catch,在try{}中發生的錯誤會立即轉到catch{}塊。這樣的話,就很容易實作類似于try/catch異常操作的的非阻塞異步版本:

在上面這個改進的例子中,第一個then()和第二個then()中如果存在錯誤,就會将異常轉到catch()中,而第三個then(),則是程式無論如何都會往下繼續運作的。

javascript promises: an introduction

繼續閱讀