RxJS mergeAll

2020-10-14 10:23 更新

將高階 Observable 轉(zhuǎn)換為其中的一階 Observable 同時傳遞內(nèi)部 Observable 上發(fā)出的所有值。

mergeAll<T>(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction<ObservableInput<T>, T>

參量

同時 可選的。 默認值為 Number.POSITIVE_INFINITY。 內(nèi)部最大數(shù)量 可觀察項被同時訂閱。

returns

OperatorFunction<ObservableInput<T>, T>:發(fā)出所有值的 Observable 源 Observable 發(fā)出的內(nèi)部Observable。

描述

展平可觀察的事物。

mergeAll大理石圖

mergeAll訂閱發(fā)出 Observable 的 Observable,也稱為 一個更高階的 Observable。 每次觀察到其中一種發(fā)射出的內(nèi)部 可觀察對象,它訂閱并從 內(nèi)部 Observable 在輸出 Observable上。 僅輸出可觀察 一旦所有內(nèi)部可觀測對象都完成,則完成。 傳遞的任何錯誤 內(nèi)部 Observable 將立即在輸出 Observable 上發(fā)出。

例子

為每個點擊事件產(chǎn)生一個新的 Observable 間隔,并將其輸出混合為一個 Observable

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


const clicks = fromEvent(document, 'click');
const higherOrder = clicks.pipe(map((ev) => interval(1000)));
const firstOrder = higherOrder.pipe(mergeAll());
firstOrder.subscribe(x => console.log(x));

每次點擊從每秒 0 到 9 進行計數(shù),但僅允許 2 個并發(fā)計時器

import { fromEvent, interval } from 'rxjs';
import { take, map, mergeAll } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const higherOrder = clicks.pipe(
  map((ev) => interval(1000).pipe(take(10))),
);
const firstOrder = higherOrder.pipe(mergeAll(2));
firstOrder.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號