RxJS timeoutWith

2020-10-13 10:15 更新

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

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

參量

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

returns

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

描述

這是 的一個(gè)版本, timeout運(yùn)算符 可讓您指定后備 Observable。

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

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

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

添加可觀察到的后備

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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)