拋出或處理錯誤(catch)、重試(retry、retryWhen)spa
public catch(selector: function): Observable
捕獲 observable 中的錯誤, 能夠經過返回一個新的 observable 或者拋出錯誤對象來處理code
當源 Observable 發生錯誤的時候,拋出一個新的錯誤 .catch(err => { throw 'error in source. Details: ' + err; }) 當發生錯誤的時候重試源 Observable, 和retry()操做符相似 .catch((err, caught) => caught) 當發生錯誤的時候經過返回一個新的 Observable 繼續運行 .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))
public retry(count: number): Observable
錯誤後重試 N (N = count)次對象
返回一個 Observable, 該 Observable 是源 Observable 不包含錯誤異常的鏡像。 若是源 Observable 發生錯誤, 這個方法不會傳播錯誤而是會不 斷的從新訂閱源 Observable 直到達到最大重試次數 (由數字參數指定)。io
public retryWhen(notifier: function(errors: Observable): Observable): Observable
返回一個 Observable, 該 Observable 是源 Observable 不包含錯誤異常的鏡像。function
若是源頭 Observable 觸發 error, 這個方法會發出引發錯誤的 Throwable 給 notifier 返回的 Observable。 該方法會從新訂閱源 Observable。若是該 Observable 觸發 complete 或者 error 則該方法會訂閱觸發 complete 和 error。select