W3cubDocs

/RxJS

publish

function stable

Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called before it begins emitting items to those Observers that have subscribed to it.

publish<T, R>(selector?: OperatorFunction<T, R>): MonoTypeOperatorFunction<T> | OperatorFunction<T, R>

Parameters

selector

Optional. Default is undefined.

Optional selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all notifications of the source from the time of the subscription on.

Returns

MonoTypeOperatorFunction<T> | OperatorFunction<T, R>: A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.

Description

Makes a cold Observable hot

publish marble diagram

Examples

Make source$ hot by applying publish operator, then merge each inner observable into a single one and subscribe.

import { of, zip, interval, merge } from "rxjs";
import { map, publish, tap } from "rxjs/operators";

const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)).pipe(
  map(values => values[1])
);

source$
  .pipe(
    publish(multicasted$ =>
      merge(
        multicasted$.pipe(tap(x => console.log('Stream 1:', x))),
        multicasted$.pipe(tap(x => console.log('Stream 2:', x))),
        multicasted$.pipe(tap(x => console.log('Stream 3:', x))),
      )
    )
  )
  .subscribe();

// Results every two seconds
// Stream 1: 1
// Stream 2: 1
// Stream 3: 1
// ...
// Stream 1: 9
// Stream 2: 9
// Stream 3: 9

Overloads

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

Parameters

There are no parameters.

Returns

UnaryFunction<Observable<T>, ConnectableObservable<T>>

publish(selector: (shared: Observable<T>) => O): OperatorFunction<T, ObservedValueOf<O>>

Parameters

selector

Type: (shared: Observable) => O.

Returns

OperatorFunction<T, ObservedValueOf<O>>

publish(selector: MonoTypeOperatorFunction<T>): MonoTypeOperatorFunction<T>

Parameters

selector

Type: MonoTypeOperatorFunction.

Returns

MonoTypeOperatorFunction<T>

© 2015–2018 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/publish