RxJS onErrorResumeNext

2020-10-14 10:26 更新

當(dāng)任何提供的 Observable 發(fā)出完整或錯誤通知時,它立即訂閱下一個 通過了。

onErrorResumeNext<T, R>(...nextSources: any[]): OperatorFunction<T, R>

參量

nextSources 類型: any[]。

returns

OperatorFunction<T, R>:一個 Observable,它從源 Observable 發(fā)出值,但是-如果它出錯-訂閱 到下一個傳遞的 Observable 等,直到它完成或用完 Observable。

描述

不管執(zhí)行什么,都執(zhí)行一系列 Observable,即使這意味著吞咽錯誤。

onErrorResumeNext marble diagram

onErrorResumeNext是接受一系列 Observable 的運(yùn)算符,直接以 參數(shù)或數(shù)組。 如果沒有提供單個 Observable,則返回的 Observable 的行為將相同 作為來源。

onErrorResumeNext返回一個 Observable,該 Observable 首先從源 Observable 訂閱并重新發(fā)送值。 當(dāng)其值流結(jié)束時-無論 Observable 完成還是發(fā)出錯誤- onErrorResumeNext 將訂閱作為該方法的參數(shù)傳遞的第一個 Observable。 它將開始重新發(fā)射 它的值也是如此-再次-當(dāng)該流結(jié)束時, onErrorResumeNext將繼續(xù)訂閱另一個 無論先前的 Observable 是完成還是以錯誤結(jié)束,都按提供的系列進(jìn)行觀測。 這將 直到序列中不再有可觀測對象為止,直到此時返回的可觀測對象 完成-即使最后訂閱的流以錯誤結(jié)尾。

onErrorResumeNext因此可以認(rèn)為是 版本 concat運(yùn)算符的 ,它更寬松 當(dāng)涉及到其輸入Observables 發(fā)出的錯誤時。 雖然 concat訂閱下一個 Observable 僅在上一個成功完成后才連續(xù) onErrorResumeNext訂閱,即使以 一個錯誤。

請注意,您無法訪問 Observables 發(fā)出的錯誤。 特別不要 希望這些錯誤出現(xiàn)在傳遞給的錯誤回調(diào)中 Observable。 如果你想 基于 Observable 發(fā)出的錯誤的特定操作,您應(yīng)該嘗試一下 catchError。

映射失敗后訂閱下一個 Observable

import { of } from 'rxjs';
import { onErrorResumeNext, map } from 'rxjs/operators';


of(1, 2, 3, 0).pipe(
  map(x => {
      if (x === 0) { throw Error(); }
       return 10 / x;
  }),
  onErrorResumeNext(of(1, 2, 3)),
)
.subscribe(
  val => console.log(val),
  err => console.log(err),          // Will never be called.
  () => console.log('that\'s it!')
);


// Logs:
// 10
// 5
// 3.3333333333333335
// 1
// 2
// 3
// "that's it!"

超載

onErrorResumeNext(): OperatorFunction<T, T> 參量 沒有參數(shù)。 returns OperatorFunction<T, T> `

onErrorResumeNext(v: any): OperatorFunction<T, T | T2> `

參量 類型
v 類型: any

returns OperatorFunction<T, T | T2>

onErrorResumeNext(v: any, v2: any): OperatorFunction<T, T | T2 | T3>

參量 類型
v 類型: any
v2 類型: any

returns OperatorFunction<T, T | T2 | T3> onErrorResumeNext(v: any, v2: any, v3: any): OperatorFunction<T, T | T2 | T3 | T4>

參量 類型
v 類型: any
v2 類型: any
v3 類型: any

returns OperatorFunction<T, T | T2 | T3 | T4>

onErrorResumeNext(v: any, v2: any, v3: any, v4: any): OperatorFunction<T, T | T2 | T3 | T4 | T5>

參量 類型
v 類型: any
v2 類型: any
v3 類型: any
v4 類型: any

returns OperatorFunction<T, T | T2 | T3 | T4 | T5>

onErrorResumeNext(v: any, v2: any, v3: any, v4: any, v5: any): OperatorFunction<T, T | T2 | T3 | T4 | T5 | T6>

參量 類型
v 類型: any
v2 類型: any
v3 類型: any
v4 類型: any
v5 類型: any

returns OperatorFunction<T, T | T2 | T3 | T4 | T5 | T6> onErrorResumeNext(v: any, v2: any, v3: any, v4: any, v5: any, v6: any): OperatorFunction<T, T | T2 | T3 | T4 | T5 | T6 | T7>

參量 類型
v 類型: any
v2 類型: any
v3 類型: any
v4 類型: any
v5 類型: any
v6 類型: any

returns OperatorFunction<T, T | T2 | T3 | T4 | T5 | T6 | T7> onErrorResumeNext(...observables: any[]): OperatorFunction<T, T R>

參量 類型
可觀察的 類型: any[]

returns OperatorFunction<T, T | R>

onErrorResumeNext(array: any[]): OperatorFunction<T, T | R>

參量 類型
數(shù)組 類型: any[]

returns OperatorFunction<T, T | R>

也可以看看

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號