在异步调用中订阅Observable不工作[Angular2]
问题描述:
我在我的service.ts中有一个方法getData(),如下所示。这会返回一个Observable。另一种服务ApiService也有一个方法get()它也返回一个Observable。在异步调用中订阅Observable不工作[Angular2]
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观察的总是订阅到apiUrl3。
我需要每个getData()单独订阅。有人可以帮我吗?
预期结果:
加工apiUrl1
加工apiUrl2
加工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));
}
我通过所有的*解释和其他资源来了解Observable和Promises真的是什么。但是在我的异步调用中这不起作用。你能帮我做什么错吗? – anusreemn