gpt4 book ai didi

angular - RxJS:Share() 一个 Observable 并向每个新订阅者发出最后一个值

转载 作者:太空狗 更新时间:2023-10-29 17:52:01 26 4
gpt4 key购买 nike

我正在使用 .share() 在服务的所有订阅者之间共享一个 Observable:

@Injectable()
export class ChannelsService {
private store: IChannel[] = [];
private _own: BehaviorSubject<IChannel[]> = new BehaviorSubject([]);
readonly own: Observable<IChannel[]> = this._own.asObservable().share();
...(the rest of the service basically makes CRUD http request and then calls this._own.next(result) to emit the result to all subscribers)
}

问题:只有对 Observable 的第一个订阅 (ChannelsService.own.subscribe(...)) 获取初始数据,其余订阅获取“null”作为第一个订阅的值。对 this._own.next(result) 的下一次调用将正确地将其值发送给所有订阅者。

知道如何在多个订阅者之间 .share() 一个 Observable 并获取所有订阅者发出的最后一个值吗? (我试过 .share().last() 但没办法...)。

谢谢!

最佳答案

您可能需要 shareReplay()(自 RxJS 5.4.0 起)或 publishReplay().refCount() 在 RxJS < 5.4.0 中。

例如:

this._own.asObservable()
.publishReplay(1)
.refCount()
.take(1);

关于angular - RxJS:Share() 一个 Observable 并向每个新订阅者发出最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44843261/

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