在异步调用中订阅Observable不起作用[Angular2]

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

Vos*_*vid 0

不确定你的问题出在哪里,但这更清楚,也许会起作用。

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)