RxJS onErrorResumeNext

2020-10-14 10:26 更新

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

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

參量

nextSources 類型: any[]。

returns

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

描述

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

onErrorResumeNext marble diagram

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

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

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

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

映射失敗后訂閱下一個(gè) 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> 參量 沒(méi)有參數(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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)