RxJS switchAll

2020-10-14 10:35 更新

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

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

參量

沒(méi)有參數(shù)。

returns

OperatorFunction<ObservableInput<T>, T>

描述

展平可觀察的事物。

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

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

例子

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

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)