RxJS CombineAll

2020-10-14 09:53 更新

通過 應(yīng)用 combineLatest在 Observable-of-Observables 完成時 來展平 Observable-of-Observables。

combineAll<T, R>(project?: (...values: any[]) => R): OperatorFunction<T, R>

參量

項目 可選的。 默認(rèn)值為 undefined。 類型: (...values: any[]) => R。

returns

OperatorFunction<T, R>:

描述

combineAll marble diagram

combineAll獲取一個 Observable 的 Observable,并從中收集所有 Observable。 外層 Observable 完成后, 它訂閱所有收集的 Observable,并使用該 合并其值 combineLatest 策略 ,例如:

  • 每當(dāng)內(nèi)部 Observable 發(fā)出時,輸出 Observable 發(fā)出
  • 當(dāng)返回的 observable 發(fā)出時,它通過以下方式發(fā)出所有最新值:
    • 如果 了一個 該 project提供 函數(shù),則使用每個內(nèi)部 Observable 的每個最近值以它們的任意順序調(diào)用 函數(shù) 到達(dá), 的結(jié)果 project函數(shù) 就是輸出 Observable 發(fā)出的結(jié)果。
    • 如果沒有 project函數(shù),則輸出 Observable 發(fā)出所有最近值的數(shù)組。

例子

將兩個點(diǎn)擊事件映射到可觀察的有限間隔,然后應(yīng)用 combineAll

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


const clicks = fromEvent(document, 'click');
const higherOrder = clicks.pipe(
  map(ev =>
     interval(Math.random() * 2000).pipe(take(3))
  ),
  take(2)
);
const result = higherOrder.pipe(
  combineAll()
);


result.subscribe(x => console.log(x));

超載

combineAll(): OperatorFunction<ObservableInput<T>, T[]> 沒有參數(shù)。 returnsOperatorFunction<ObservableInput<T>, T[]>

combineAll(): OperatorFunction<any, T[]> 沒有參數(shù)。 returns OperatorFunction<any, T[]>

combineAll(project: (...values: T[]) => R): OperatorFunction<ObservableInput<T>, R>

參量 類型
項目 類型: (...values: T[]) => R

returns OperatorFunction<ObservableInput<T>, R> combineAll(project: (...values: any[]) => R): OperatorFunction<any, R>

參量 類型
項目 類型: (...values: any[]) => R

returns OperatorFunction<any, R>

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號