Chr*_*odz 5 observable rxjs typescript behaviorsubject angular
我正在尝试组合两个 observable,一个是路由参数,另一个是自定义的。
我正在使用,zip因为forkJoin似乎不起作用。但是 zip 表现得很奇怪,因为当我发出自定义的 zip 时,我没有得到那个值。我只得到第一个空值,该值已BehaviorSubject作为默认发出值提供给我。
我读了这个
“zip 操作符将订阅所有内部 observable,等待每个内部 observable 发出一个值。一旦发生这种情况,将发出具有相应索引的所有值。这将一直持续到至少一个内部 observable 完成。”
这是否意味着它不会响应直到两个 observable 都发出一个值?因为路由参数 observable 只会发出一次,但dataEmitter会继续发出值。在这种情况下使用的正确运算符是什么?
这是我的一些代码:
我的服务中的发射器:
private dataEmitter: BehaviorSubject<any> = new BehaviorSubject<any>(null);
Run Code Online (Sandbox Code Playgroud)
组件订阅,只null从 获取dataEmitter,从不this.calculatedData:
Observable.zip(this.route.params, this.dataCalculator.dataEmitter$)
.subscribe(data => console.log(data));
Run Code Online (Sandbox Code Playgroud)
当所有计算完成后调用:
this.dataEmitter.next(this.calculatedData);
Run Code Online (Sandbox Code Playgroud)
正如 @cartant 所指出的,切换到combineLatest按预期工作:
Observable.combineLatest(this.route.params, this.dataCalculator.dataEmitter$)
.subscribe(data => console.log(data));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1090 次 |
| 最近记录: |