错误与共享

RxJS shareReplay

多个订阅者共享一次 source 执行,新订阅者立即收到最近缓存值。

shareReplay({ bufferSize: 1, refCount: true })

时间线如何变化

  1. 1
    订阅者 A 到来

    共享流首次订阅 cold source,发起一次请求。

  2. 2
    user 写入缓存

    A 收到值,shareReplay 保留最近一个值。

  3. 3
    订阅者 B 后加入

    不会重新发起请求。

  4. 4
    向 B 回放 user

    新订阅者立即收到 buffer 中的最近值。

  5. 5
    共享一次执行

    A 与 B 使用同一份 source 结果。

受支持的示例代码

实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。

import { shareReplay } from 'rxjs'

const user$ = loadUser().pipe(
  shareReplay({ bufferSize: 1, refCount: true })
)

user$.subscribe(renderHeader)
user$.subscribe(renderProfile)