在角度1中我可以嵌套一些http调用并对它们的结果做出如下反应:
this.$qSessionPromise
.then(() => {
return this.Init();
})
.then(() => {
return this.Services.GetData1("id1");
})
.then((data: model.DataType1) => {
this.data = data;
})
.then(() => {
this.SetIsInitialized(true);
this.handler = new MyHandler(this.data);
this.RegisterEvents();
});
但在角度2中,我找不到办法做类似的事情......
当我使用subscribe-method时,无法使用另一个订阅方法...
this.service.GetData1()
.subscribe(data:model.DataType1 => {
this.data = data;
return this.Services.GetData2("id2");
})
.subscribe(data:model.DataType2 => {
this.data = data;
})
有办法解决这个问题吗?
答案 0 :(得分:2)
只需使用.mergeMap()
代替.subscribe()
(最后一个除外,因为没有.subscribe()
不会进行HTTP调用
this.service.GetData1()
.mergeMap(data:model.DataType1 => {
this.data = data;
return this.Services.GetData2("id2");
})
.subscribe(data:model.DataType2 => {
this.data = data;
})