gpt4 book ai didi

RxJS 如何在继续之前等待两个 ReplaySubjects 产生值

转载 作者:行者123 更新时间:2023-12-01 07:35:28 29 4
gpt4 key购买 nike

我想用这样的加入:

Observable.forkJoin(
this.service1.dataSourceIsAReplaySubject,
this.service2.dataSourceIsAnObservable)
.subscribe(values => {
console.log('inside subscribe values is', values);
});

但 console.log 永远不会触发。

我猜重播主题永远不会完成,这就是为什么 forkJoin 永远不会停止等待。

我试过这个,但这也不起作用。
我首先尝试了 ReplaySubject,然后尝试了 Observable,反之亦然。
Observable.forkJoin(
Observable.from(this.service1.dataSourceIsAReplaySubject),
this.service2.dataSourceIsAnObservable)
.subscribe(values => {
console.log('inside subscribe values is', values);
});

我也尝试调用 share 方法:
Observable.forkJoin(
this.service1.dataSourceIsAReplaySubject.share(),
this.service2.dataSourceIsAnObservable)
.subscribe(values => {
console.log('inside subscribe values is', values);
});

我能做些什么来等待两个 ReplaySubjects 或 1 个 ReplaySubject 和 1 个 Observable 的混合

最佳答案

forkJoin 在传递给它的 observable 完成之前不会发出值;它发出每个可观察值的最后一个值。

您可以使用 first 运算符确保它们完成:

Observable.forkJoin(
this.service1.dataSourceIsAReplaySubject.first(),
this.service2.dataSourceIsAnObservable.first())
.subscribe(values => {
console.log('inside subscribe values is', values);
});

关于RxJS 如何在继续之前等待两个 ReplaySubjects 产生值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600590/

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