我的 service.ts 中有一个方法 getData(),如下所示。这将返回一个 Observable。另一个服务 ApiService 也有一个方法 get() 也返回一个 Observable。
getData(args, parentKey?):any {
return new Observable(observer => {
this.apiService.get(args).subscribe(
response => {
observer.next({
data: response['data'],
status: ($.isEmptyObject(response) ? false : true)
});
},
error => console.log("error : ", error),
() => console.log("finished")
);
});
}
我正尝试在从我的组件发出的异步 API 调用中重用此 getData() 方法。见下文:
this.myService.getData({
url: 'apiUrl1',
method: 'Method1',
parameters: {}
}).subscribe(response => {
if (response['status']) {
console.log('Processed apiUrl1');
}
});
this.myService.getData({
url: 'apiUrl2',
method: 'Method2',
parameters: {}
}).subscribe(response => {
if (response['status']) {
console.log('Processed apiUrl2');
}
});
this.myService.getData({
url: 'apiUrl3',
method: 'Method3',
parameters: {}
}).subscribe(response => {
if (response['status']) {
console.log('Processed apiUrl3');
}
});
错误: 但是发生的是 getData-observable 总是被订阅到 apiUrl3。
我需要单独订阅每个 getData()。有人可以帮帮我吗?
预期结果:
Processed apiUrl1
Processed apiUrl2
Processed apiUrl3
最佳答案
不确定您的问题出在哪里,但这更清楚,也许会奏效。
getData(args, parentKey?):any {
this.apiService.get(args)
.map(response => {
data: response['data'],
status: ($.isEmptyObject(response) ? false : true)
})
.do(() => console.log("finished"))
.catch(error => console.log("error : ", error));
}
关于typescript - 在异步调用中订阅 Observable 不起作用 [Angular2],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43603989/