• publish
    • 签名: publish() : ConnectableObservable
  • 共享源 observable 并通过调用 connect 方法使其变成热的。
    • 示例
      • 示例 1: 在订阅之后调用 observable 的 connect 方法
  • 其他资源

    publish

    签名: publish() : ConnectableObservable

    共享源 observable 并通过调用 connect 方法使其变成热的。

    publish - 图1

    示例

    示例 1: 在订阅之后调用 observable 的 connect 方法

    ( jsBin |
    jsFiddle )

    1. import { interval } from 'rxjs/observable/of';
    2. import { publish, tap } 'rxjs/operators';
    3. // 每1秒发出值
    4. const source = interval(1000);
    5. const example = source.pipe(
    6. // 副作用只会执行1次
    7. tap(_ => console.log('Do Something!')),
    8. // 不会做任何事直到 connect() 被调用
    9. publish()
    10. );
    11. /*
    12. source 不会发出任何值直到 connect() 被调用
    13. 输出: (5秒后)
    14. "Do Something!"
    15. "Subscriber One: 0"
    16. "Subscriber Two: 0"
    17. "Do Something!"
    18. "Subscriber One: 1"
    19. "Subscriber Two: 1"
    20. */
    21. const subscribe = example.subscribe(val =>
    22. console.log(`Subscriber One: ${val}`)
    23. );
    24. const subscribeTwo = example.subscribe(val =>
    25. console.log(`Subscriber Two: ${val}`)
    26. );
    27. // 5秒后调用 connect,这会使得 source 开始发出值
    28. setTimeout(() => {
    29. example.connect();
    30. }, 5000);

    其他资源

    • publish :newspaper: - 官方文档

    :file_folder: 源码: https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/publish.ts