gpt4 book ai didi

rxjs - 如何将最后发出的项目 "replay"发送给每个订阅者?

转载 作者:行者123 更新时间:2023-12-04 01:40:14 26 4
gpt4 key购买 nike

在 RxJS 中,我想为每个新订阅者提供最后一个发出的项目。但是我如何在 Observable 链中做到这一点?

this.http.get().map().replaySubject().refCount()

最佳答案

这个答案是指RxJS 5:

一种方法是使用 publishReplay :

this.http
.get()
.map()
.publishReplay(1)
.refCount();

如果您的源是一个源,则完成(这对于 rest-call 来说是典型的,因为它在收到响应后完成),您也可以使用 publishLast :

this.http
.get()
.map()
.publishLast()
.refCount();

第三种方式(给你最大的灵 active )是使用外部的 BehaviorSubjectReplaySubject:

public myData$: BehaviorSubject<any> = new BehaviorSubject(null); // initial value is "null"

public requestData(): BehaviorSubject<any> {
this.http
.get()
.map()
.do(data => this.myData$.next(data))
.subscribe();

return this.myData$.skip(1); // the returned subject skips 1, because this would be the current value - of course the skip is optional and depends on the implementation of the requesting component
}

在您的组件中,您可以通过 myData$.subscribe(...) 获取当前“缓存”数据或通过 requestData().subscribe (...) 获取最新数据。

关于rxjs - 如何将最后发出的项目 "replay"发送给每个订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42352570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com