exhaustMap
Proyecta cada emisión de la fuente a un Observable interno que se fusiona con el Observable resultante únicamente si el Observable interno anterior se ha completado
Descripción
Ejemplos
import { delay, exhaustMap, map, mergeAll, take } from "rxjs/operators";
import { fromEvent } from "rxjs";
import { ajax } from "rxjs/ajax";
const click$ = fromEvent(document.getElementById("ghibliButton"), "click");
function getGhibliFilms() {
return ajax.getJSON("https://ghibliapi.herokuapp.com/films").pipe(
delay(5000),
mergeAll(),
map(({ title }) => title),
take(3)
);
}
// Obtener 3 películas de Studio Ghibli al hacer click en el botón. Si hay alguna petición en curso, los clicks serán ignorados (cada petición tiene un retraso de 5s para poder observar este efecto.)
click$.pipe(exhaustMap((_) => getGhibliFilms())).subscribe(console.log);
// Salida: (Primer click) (click ignorado) (click ignorado) (5s) Castle in the Sky, Grave of the Fireflies, My Neighbor TotoroEjemplo de la documentación oficial
Recursos adicionales
Last updated
