0

我正在使用 angular2:

this.route.params.subscribe(params => {
    //do stuff with params
})

我查看了RxJS 文档,它说可以添加完成回调:

this.route.params.subscribe(params => {
    // do stuff with params
}, (err) => { throw err;}, () => {
    console.log('Completed!');
});

但是这个完成永远不会被解雇。Angular2的使用Observables与规范不同吗?

4

1 回答 1

1

ActivatedRoute observables 的工作方式没有什么特别之处。您在如何检测完成状态方面是正确的。但完成可能永远不会发生。当 Observable 执行observer.complete() 时会调用完成回调,这发生在有固定数量的数据要发送时(比如遍历数组,或从其他来源获得响应)。但是路由参数上的 Observable 是不确定的 - 旨在侦听组件生命周期内可能发生的参数更改(因此可以使用相同的组件来提供不同的参数值,从而节省生成时间组件)。由于这些更改可能来自用户或应用程序的其他部分,因此 Observable 会持续组件的生命周期,并且不应发生完成的回调。

于 2016-08-17T19:57:26.137 回答