publishLast
function
deprecated
Returns a connectable observable sequence that shares a single subscription to the underlying sequence containing only the last notification.
Deprecation Notes
Will be removed in v8. To create a connectable observable with an AsyncSubject
under the hood, use connectable
. source.pipe(publishLast())
is equivalent to connectable(source, { connector: () => new AsyncSubject(), resetOnDisconnect: false })
. If you're using refCount
after publishLast
, use the share
operator instead. source.pipe(publishLast(), refCount())
is equivalent to source.pipe(share({ connector: () => new AsyncSubject(), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))
. Details: https://rxjs.dev/deprecations/multicasting
publishLast<T>(): UnaryFunction<Observable<T>, ConnectableObservable<T>>
Deprecation Notes
Will be removed in v8. To create a connectable observable with an AsyncSubject
under the hood, use connectable
. source.pipe(publishLast())
is equivalent to connectable(source, { connector: () => new AsyncSubject(), resetOnDisconnect: false })
. If you're using refCount
after publishLast
, use the share
operator instead. source.pipe(publishLast(), refCount())
is equivalent to source.pipe(share({ connector: () => new AsyncSubject(), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))
. Details: https://rxjs.dev/deprecations/multicasting
Parameters
There are no parameters.
Returns
UnaryFunction<Observable<T>, ConnectableObservable<T>>
: A function that returns an Observable that emits elements of a sequence produced by multicasting the source sequence.
Description
Similar to publish
, but it waits until the source observable completes and stores the last emitted value. Similarly to publishReplay
and publishBehavior
, this keeps storing the last value even if it has no more subscribers. If subsequent subscriptions happen, they will immediately get that last stored value and complete.
Example
import { interval } from 'rxjs'; import { publishLast, tap, take } from 'rxjs/operators'; const connectable = interval(1000) .pipe( tap(x => console.log("side effect", x)), take(3), publishLast()); connectable.subscribe( x => console.log( "Sub. A", x), err => console.log("Sub. A Error", err), () => console.log( "Sub. A Complete")); connectable.subscribe( x => console.log( "Sub. B", x), err => console.log("Sub. B Error", err), () => console.log( "Sub. B Complete")); connectable.connect(); // Results: // "side effect 0" // "side effect 1" // "side effect 2" // "Sub. A 2" // "Sub. B 2" // "Sub. A Complete" // "Sub. B Complete"
See Also
© 2015–2021 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors.
Code licensed under an Apache-2.0 License. Documentation licensed under CC BY 4.0.
https://rxjs.dev/api/operators/publishLast