轮询时如何使用RXJS HTTP处理Angular2中的连接丢失
How to handle loss of connection in Angular2 with RXJS HTTP when polling
我有以下代码(针对此 post 进行了简化)- 假设初始调用 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();
});
}
这将简单地忽略错误并且不会发出任何东西。
我有以下代码(针对此 post 进行了简化)- 假设初始调用 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();
});
}
这将简单地忽略错误并且不会发出任何东西。