我正在尝试组合两个可观察对象,其中一个是路由参数,另一个是自定义参数。
我正在使用zip
,因为forkJoin
似乎不起作用。但是拉链表现得很奇怪,因为当我发出我的自定义拉链时,我没有得到那个值。我只得到BehaviorSubject
作为默认发射值提供给我的第一个空值。
我读了这个
“zip 运算符将订阅所有内部可观察对象,等待每个对象发出一个值。一旦发生这种情况,将发出具有相应索引的所有值。这将持续到至少一个内部可观察对象完成。”
这是否意味着在两个可观察对象都发出值之前它不会响应?因为路由参数 observable 只会发出一次,但dataEmitter
会继续发出值。在这种情况下,正确的运算符是什么?
这是我的一些代码:
在我的服务中发射器:
private dataEmitter: BehaviorSubject<any> = new BehaviorSubject<any>(null);
组件订阅,只null
从 中获取dataEmitter
,从不this.calculatedData
:
Observable.zip(this.route.params, this.dataCalculator.dataEmitter$)
.subscribe(data => console.log(data));
完成所有计算后调用此方法:
this.dataEmitter.next(this.calculatedData);