我有以下代码(此帖子已简化) - 假设初次调用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();
});
}
提前致谢。
答案 0 :(得分:5)
如果您知道由于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();
});
}
这将忽略错误并且不会发出任何内容。