codecamp

RxJS CombineAll

通过 应用 combineLatest在 Observable-of-Observables 完成时 来展平 Observable-of-Observables。

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

参量

项目 可选的。 默认值为 undefined。 类型: (...values: any[]) => R

returns

OperatorFunction<T, R>:

描述

combineAll marble diagram

combineAll获取一个 Observable 的 Observable,并从中收集所有 Observable。 外层 Observable 完成后, 它订阅所有收集的 Observable,并使用该 合并其值 combineLatest 策略 ,例如:

  • 每当内部 Observable 发出时,输出 Observable 发出
  • 当返回的 observable 发出时,它通过以下方式发出所有最新值:
    • 如果 了一个 该 project提供 函数,则使用每个内部 Observable 的每个最近值以它们的任意顺序调用 函数 到达, 的结果 project函数 就是输出 Observable 发出的结果。
    • 如果没有 project函数,则输出 Observable 发出所有最近值的数组。

例子

将两个点击事件映射到可观察的有限间隔,然后应用 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[]> 没有参数。 returnsOperatorFunction<ObservableInput<T>, T[]>

combineAll(): OperatorFunction<any, T[]> 没有参数。 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>

也可以看看

RxJS catchError
RxJS combineLatest(已弃用)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }