gpt4 book ai didi

angular - 在发出两个可观察对象的第一个值后,Zip 不发出值

转载 作者:太空狗 更新时间:2023-10-29 18:30:58 25 4
gpt4 key购买 nike

我正在尝试组合两个可观察对象,其中一个是路由参数,另一个是自定义参数。

我正在使用 zip 因为 forkJoin 似乎不起作用。但是 zip 表现得很奇怪,因为当我发出自定义的时,我没有得到那个值。我只得到第一个空值,它已作为默认发射值提供给我的 BehaviorSubject

我读过这个

"The zip operator will subscribe to all inner observables, waiting for each to emit a value. Once this occurs, all values with the corresponding index will be emitted. This will continue until at least one inner observable completes."

这是否意味着在两个可观察对象都发出值之前它不会响应?因为 route params observable 只会发射一次,但是 dataEmitter 会持续发射值。在这种情况下,正确的运算符是什么?

这是我的一些代码:

我的服务中的发射器:

private dataEmitter: BehaviorSubject<any> = new BehaviorSubject<any>(null);

组件订阅,只从dataEmitter获取null,从不获取this.calculatedData:

Observable.zip(this.route.params, this.dataCalculator.dataEmitter$)
.subscribe(data => console.log(data));

当所有的计算都完成后调用:

this.dataEmitter.next(this.calculatedData);

最佳答案

正如@cartant 所指出的,切换到 combineLatest 会按预期工作:

Observable.combineLatest(this.route.params, this.dataCalculator.dataEmitter$)
.subscribe(data => console.log(data));

关于angular - 在发出两个可观察对象的第一个值后,Zip 不发出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45074160/

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