RxJS shareReplay
多个订阅者共享一次 source 执行,新订阅者立即收到最近缓存值。
shareReplay({ bufferSize: 1, refCount: true })时间线如何变化
- 1订阅者 A 到来
共享流首次订阅 cold source,发起一次请求。
- 2user 写入缓存
A 收到值,shareReplay 保留最近一个值。
- 3订阅者 B 后加入
不会重新发起请求。
- 4向 B 回放 user
新订阅者立即收到 buffer 中的最近值。
- 5共享一次执行
A 与 B 使用同一份 source 结果。
受支持的示例代码
实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。
import { shareReplay } from 'rxjs'
const user$ = loadUser().pipe(
shareReplay({ bufferSize: 1, refCount: true })
)
user$.subscribe(renderHeader)
user$.subscribe(renderProfile)