anu*_*emn 6 typescript angular2-services angular2-observables
我在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")
);
});
}
Run Code Online (Sandbox Code Playgroud)
我试图在我的组件的异步 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');
}
});
Run Code Online (Sandbox Code Playgroud)
错误: 但是会发生的是getData-observable总是订阅到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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |