抛出或处理错误(catch)、重试(retry、retryWhen)
catch
public catch(selector: function): Observable
捕获 observable 中的错误, 可以通过返回一个新的 observable 或者抛出错误对象来处理
当源 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'))
retry
public retry(count: number): Observable
错误后重试 N (N = count)次
返回一个 Observable, 该 Observable 是源 Observable 不包含错误异常的镜像。 如果源 Observable 发生错误, 这个方法不会传播错误而是会不 断的重新订阅源 Observable 直到达到最大重试次数 (由数字参数指定)。
retryWhen
public retryWhen(notifier: function(errors: Observable): Observable): Observable
返回一个 Observable, 该 Observable 是源 Observable 不包含错误异常的镜像。
如果源头 Observable 触发 error, 这个方法会发出引起错误的 Throwable 给 notifier 返回的 Observable。 该方法会重新订阅源 Observable。如果该 Observable 触发 complete 或者 error 则该方法会订阅触发 complete 和 error。