繁体   English   中英

如何在轮询时使用RXJS HTTP处理Angular2中的连接丢失

[英]How to handle loss of connection in Angular2 with RXJS HTTP when polling

我有以下代码(本文简化) - 假设初始调用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();
        });
}

提前致谢。

如果您知道由于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();
        });
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM