combineAll

Convierte un Observable de orden superior en uno de primer orden aplicando combineLatest cuando el Observable de orden superior se completa

Signatura

Firma

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

Parámetros

Retorna

OperatorFunction<T, R>

Descripción

combineAll recibe un Observable de Observables y recoge todos los Observables que contenga. Una vez que el Observable externo se haya completado, se suscribe a todos los Observables recogidos y combina sus valores mediante la estrategia combineLatest, de manera que:

  • Cada vez que un Observable interno emite, el Observable resultante emite.

  • Cuando el Observable retornado emite, emite todos los valores recientes de manera que:

    • Si se proporciona una función project, se llama a dicha función con cada valor de cada Observable interno en el orden en el que llegaron, y el resultado de la función de proyección es lo que se emite en el Observable resultante.

    • Si no se proporciona una función project, el Observable resultante emite un array de todos los valores recientes.

Ejemplos

combineAll espera a recibir todos los valores, y los combina en un array

StackBlitz

import { of } from "rxjs";
import { ajax } from "rxjs/ajax";
import { map, delay, combineAll } from "rxjs/operators";

const pokemonId$ = of(1, 5, 6);

function getPokemonName(id: number) {
  return ajax.getJSON(`https://pokeapi.co/api/v2/pokemon/${id}`).pipe(
    map(({ name }) => name),
    delay(2000)
  );
}

pokemonId$
  .pipe(
    map((id) => getPokemonName(id)),
    combineAll()
  )
  .subscribe(console.log);
// Salida: (2s) ['bulbasaur', 'charmeleon', 'charizard']

Ejemplo de la documentación oficial

Proyectar dos eventos click sobre un Observable intervalo, y aplicar 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));
Sobrecargas

Firma

combineAll(): OperatorFunction<ObservableInput<T>, T[]>

Parámetros

No recibe ningún parámetro.

Retorna

OperatorFunction<ObservableInput<T>, T[]>

Firma

combineAll(): OperatorFunction<any, T[]>

Parámetros

No recibe ningún parámetro.

Retorna

OperatorFunction<any, T[]>

Firma

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

Parámetros

Retorna

OperatorFunction<ObservableInput<T>, R>

Firma

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

Parámetros

Retorna

OperatorFunction<any, R>

Recursos adicionales

Documentación oficial en inglés

Last updated