race
Retorna un Observable que refleja al primer Observable que emita un valor
Descripción
Refleja las emisiones del primer Observable que emita un valor.
Ejemplos
Hacer una carrera con 3 Observables
import { mapTo } from "rxjs/operators";
import { race, timer } from "rxjs";
const slow$ = timer(5000).pipe(mapTo("Caracol"));
const medium$ = timer(3000).pipe(mapTo("Gatito"));
const fast$ = timer(2000).pipe(mapTo("Guepardo"));
//
race(slow$, medium$, fast$).subscribe((winner) =>
console.log(`Y el ganador es... ¡${winner}!`)
);
// Salida: Y el ganador es... ¡Guepardo!
Advertencia: Si alguno de los Observables lanza un error, la 'carrera' terminará con un error
import { mapTo } from "rxjs/operators";
import { race, timer, throwError } from "rxjs";
const slow$ = timer(5000).pipe(mapTo("Caracol"));
const medium$ = timer(3000).pipe(mapTo("Gatito"));
const fast$ = timer(2000).pipe(mapTo("Guepardo"));
const error$ = throwError("¡Oh no!");
race(slow$, medium$, fast$, error$).subscribe(console.log, console.error);
// Salida: (error) ¡Oh no!
Ejemplo de la documentación oficial
Reflejar al primer Observable que emita un valor
import { race, interval } from "rxjs";
import { mapTo } from "rxjs/operators";
const obs1 = interval(1000).pipe(mapTo("Rápido"));
const obs2 = interval(3000).pipe(mapTo("Velocidad media"));
const obs3 = interval(5000).pipe(mapTo("Lento"));
race(obs3, obs1, obs2).subscribe((winner) => console.log(winner));
// Salida:
// Emite 'Rápido' cada segundo
Recursos adicionales
Last updated