publishLast

Comparte el Observable fuente, emitiendo únicamente el último valor emitido a los observadores

💡 publishLast es equivalente a multicast(() => new AsyncSubject())

chevron-rightSignaturahashtag

Firma

publishLast<T>(): UnaryFunction<Observable<T>, ConnectableObservable<T>>

Parámetros

No recibe ningún parámetro.

Retorna

UnaryFunction<Observable<T>, ConnectableObservable<T>>: Una secuencia observable que contiene los elementos de una secuencia producida al multidifundir la secuencia fuente.

Descripción

Retorna una secuencia Observable conectable que comparte una sola suscripción a la secuencia subyacente, que contiene solo la última notificación. Para ello utiliza el operador multicastarrow-up-right junto a un AsyncSubject internamente.

Diagrama de canicas del operador publishLast

Es similar a publisharrow-up-right, pero espera a que el Observable fuente se complete, para almacenar su último valor emitido. Al igual que publishReplayarrow-up-right y publishBehaviorarrow-up-right, almacena este último valor emitido aunque no tenga ningún suscriptor. Si llega un suscriptor nuevo, este recibirá el valor almacenado y se completará.

Ejemplos

Compartir el Observable fuente, emitiendo únicamente su último valor

StackBlitzarrow-up-right

import { ConnectableObservable, interval, timer } from "rxjs";
import { publishLast, tap, take } from "rxjs/operators";

// number$ no empezará a emitir valores hasta que se haga una llamada a connect
const number$ = interval(1000).pipe(take(4));

const multicasted$ = number$.pipe(publishLast()) as ConnectableObservable<
  number
>;

// Llamando a connect
multicasted$.connect();

multicasted$.subscribe((val) => console.log(`Observador 1: ${val}`));
multicasted$.subscribe((val) => console.log(`Observador 2: ${val}`));

/* Salida:
(4s)
Observador 1: 3,
Observador 2: 3
*/

Si el Observable fuente no llega a completarse, nunca se emitirá ningún valor

StackBlitzarrow-up-right

Ejemplo de la documentación oficial

Recursos adicionales

Source codearrow-up-right

Documentación oficial en inglésarrow-up-right

Last updated