阅读(421) (1)

RxJS publish

2020-09-29 09:41:54 更新

返回一个 ConnectableObservable,它是多种 Observable,它等待直到其 connect 方法被调用,然后才开始向已预订该对象的 Observer 发送项目。

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

参量

选择器 可选的。默认值为undefined。可选的选择器功能,可以根据需要多次使用多播的源序列,而不会导致对该源序列的多个预订。给定来源的订阅者将从订阅开始就接收该来源的所有通知。

returns

MonoTypeOperatorFunction<T> | OperatorFunction<T, R>:一个 ConnectableObservable,它在连接时导致源 Observable 向其 Observer 发射项目。

描述

使感冒变热

发布大理石图

例子

通过应用发布运算符使 source $ 成为热门,然后将每个内部可观察项合并为一个并进行订阅。

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

超载

publish(): UnaryFunction<Observable<T>, ConnectableObservable<T>>参量没有参数。returnsUnaryFunction<Observable<T>, ConnectableObservable<T>>

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

参量 类型
选择器 类型:(shared: Observable) => O

returnsOperatorFunction<T, ObservedValueOf<O>> publish(selector: MonoTypeOperatorFunction<T>): MonoTypeOperatorFunction<T>

参量 类型
选择器 类型:MonoTypeOperatorFunction

returnsMonoTypeOperatorFunction<T>