RxJS timeoutWith

2020-10-13 10:15 更新

如果 Observable 在給定的時間段內(nèi)未發(fā)出值,則發(fā)生錯誤 訂閱第二個 Observable。

timeoutWith<T, R>(due: number |Date, withObservable: any, scheduler: SchedulerLike = async): OperatorFunction<T, T | R>

參量

到期 數(shù)字指定 Observable 必須在其內(nèi)發(fā)出值的時間或日期指定可觀察的完成時間
可觀察 如果源未通過超時檢查,將被訂閱的 Observable。
調(diào)度器 可選的。 默認值為 async。         調(diào)度程序控制何時進行超時檢查。

returns

OperatorFunction<T, T | R>:反映源的行為的 Observable,或者在超時檢查失敗時反映 Observable 的行為 作為第二個參數(shù)傳遞。

描述

這是 的一個版本, timeout運算符 可讓您指定后備 Observable。

timeoutWith是 的變體 timeout運算符 。 它的行為完全一樣, 仍然接受數(shù)字或日期作為第一個參數(shù),分別控制- 什么時候應(yīng)該發(fā)出源 Observable 的值或何時完成。

唯一的區(qū)別是它接受第二個必需參數(shù)。 這個參數(shù) 應(yīng)該是一個 Observable,當(dāng)源Observable在任何超時檢查中失敗時將被訂閱。 因此,只要常規(guī) timeout會發(fā)出錯誤, timeoutWith就會開始重新發(fā)出 第二個 Observable 的值。 請注意,不會檢查此后備 Observable 超時 本身,因此它可以發(fā)出值并在任意時間點完成。 從一瞬間開始 訂閱,從 返回的 Observable timeoutWith簡單鏡像后備流 。 什么時候流完成,它也完成。

調(diào)度程序(在 情況下 timeout作為第二個參數(shù)提供的 )仍可以提供 此處-作為第三個可選參數(shù)。 它仍然用于安排超時檢查,并且- 結(jié)果-由于訂閱發(fā)生,第二個 Observable 將被訂閱 檢查失敗后立即進行。

添加可觀察到的后備

import { intrerval } from 'rxjs';
import { timeoutWith } from 'rxjs/operators';


const seconds = interval(1000);
const minutes = interval(60 * 1000);


seconds.pipe(timeoutWith(900, minutes))
  .subscribe(
    value => console.log(value), // After 900ms, will start emitting `minutes`,
                                 // since first value of `seconds` will not arrive fast enough.
    err => console.log(err),     // Would be called after 900ms in case of `timeout`,
                                 // but here will never be called.
  );
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號