RxJS switchAll

2020-10-14 10:35 更新

僅從最新的可觀察序列將高階可觀察值轉(zhuǎn)換為一階可觀察值

switchAll<T>(): OperatorFunction<ObservableInput<T>, T>

參量

沒有參數(shù)。

returns

OperatorFunction<ObservableInput<T>, T>

描述

展平可觀察的事物。

開關(guān)全大理石圖

switchAll訂閱可觀察的可觀測對象的源,也稱為“高階可觀察對象”(或Observable<Observable<T>>)。它訂閱源發(fā)出的最新提供的“內(nèi)部可觀察的”,取消訂閱任何以前訂閱的內(nèi)部可觀察的,因此在任何時間點(diǎn)只能訂閱最新的內(nèi)部可觀察的。switchAll僅當(dāng)源可觀察對象完成并且當(dāng)前訂閱內(nèi)部可觀察對象的任何對象(如果有)也已完成時,返回的結(jié)果可觀察對象將完成。

例子

為每個點(diǎn)擊事件產(chǎn)生一個可觀察到的新間隔,但是對于每個新點(diǎn)擊,取消前一個間隔并訂閱新間隔。

import { fromEvent, interval } from 'rxjs';
import { switchAll, map, tap } from 'rxjs/operators';


const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));
const source = clicks.pipe(map((ev) => interval(1000)));


source.pipe(
  switchAll()
).subscribe(x => console.log(x));


// Output
// click
// 1
// 2
// 3
// 4
// ...
// click
// 1
// 2
// 3
// ...
// click
// ...

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號