【问题标题】:How to handle loss of connection in Angular2 with RXJS HTTP when polling轮询时如何使用 RXJS HTTP 处理 Angular2 中的连接丢失
【发布时间】:2017-02-09 18:20:14
【问题描述】:

我有以下代码(针对这篇文章进行了简化) - 假设最初调用了 onStart()

运行它工作正常。如果我失去互联网连接,我会收到 net::ERR_INTERNET_DISCONNECTED 错误(如预期的那样)轮询停止。

显然,我在这里没有处理任何错误,因为这就是我卡住的地方。我不清楚我在哪里处理这些错误以及如何处理?我需要再拨打startPolling()吗?

即使没有互联网连接,我也需要继续轮询,以便在重新连接时更新数据。请问有什么建议吗?

onStart() {
    this.startPolling().subscribe(data => {
        // do something with the data
    });
}

startPolling(): Observable<any> {
    return Observable
        .interval(10000)
        .flatMap(() => this.getData());
}

getData() {
    var url = `http://someurl.com/api`;
    return this.http.get(url)
        .map(response => {
            return response.json();
        });
}

提前致谢。

【问题讨论】:

    标签: http angular rxjs rxjs5


    【解决方案1】:

    如果您知道错误是因为 this.http.get(url) 而发生的,那么您可以添加 catch() 运算符,让您订阅另一个 Observable,而不是发送 error 通知的源 Observable。

    getData() {
        var url = `http://someurl.com/api`;
        return this.http.get(url)
            .catch(err => Observable.empty())
            .map(response => {
                return response.json();
            });
    }
    

    这将简单地忽略错误并且不会发出任何内容。

    【讨论】:

    • 谢谢马丁,我会试一试的。
    • 辛苦了,谢谢。认为我需要对 observables 进行一些研究..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多