【问题标题】:Subscribing to Observable in async calls not working [Angular2]在异步调用中订阅 Observable 不起作用 [Angular2]
【发布时间】:2017-04-25 07:14:09
【问题描述】:

我的 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()。有人可以帮帮我吗?

预期结果:

处理后的 apiUrl1

处理后的 apiUrl2

处理后的 apiUrl3

【问题讨论】:

  • 我通读了所有关于什么是 Observables 和 Promises 的 stackoverflow 解释和其他资源。但这在我的异步调用的情况下不起作用。你能帮我做错吗?

标签: typescript angular2-services angular2-observables


【解决方案1】:

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

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));
}

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2020-11-13
    • 2019-06-28
    • 2017-11-26
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多