【发布时间】:2020-02-09 09:10:39
【问题描述】:
我有这个工作代码。它从路由器获取 ID 并将其作为参数应用以获取组件数据的负载。
this.route.params.subscribe(_ => {
this.id = _.id;
this.service.getMineral(this.id)
.subscribe(suc => this.data = suc, err => console.log(err));
}
);
然后,我尝试使用更好的方法,并希望在第一个订阅完成时调用第二个订阅。根据the second sample in this answer,我应该分享第一个结果,然后切换地图以取消订阅并继续下一个。所以我实现了以下。
const route$ = this.route.params.pipe(share());
const data$ = route$.pipe(
switchMap(() => this.service.getMineral(this.id)));
route$.subscribe(_ => this.id = _.id);
data$.subscribe(suc => this.data = suc, err => console.log(err));
遗憾的是,这不会调用服务器,也不会将数据传递给客户端。在尝试了几次修改后,由于缺乏想法,我放弃了。
这两种方法之间的显着区别是什么?我对第二个样本的解释有什么困惑?
【问题讨论】:
标签: angular typescript rxjs switchmap