所以我使用 rxjs observables 使用间隔和重复每 30 秒调用一次 http 请求。但是,当没有互联网连接并且可观察对象调用 onError 但可观察对象永远不会重复返回时。我也在使用 retryWhen 但它不起作用
有什么建议吗?
这是我的代码
Observable.interval(2500).repeat()
.flatMap(() => this.http.get(url))
.map(res => res.text())
.catch(() => {
return Observable.of('ERROR');
})
.retryWhen(error => error)
.subscribe(data => {
// tools.destroyLoadingMessage();
alert('CONNECT OBSEVABLE ' + data);
// console.log(JSON.stringify(data));
}, err => {
alert('DISCONNECT OBSEVABLE ' + err);
// tools.showLoadingMessage('No inrernet');
})
最佳答案
为了避免在请求失败时破坏 observable,您必须捕获请求中的错误,以便流可以继续。
当出现错误时,您将看到value: error
,否则它将是服务器的响应。
Rx.Observable.interval(2500)
.flatMap(() => {
return this.http.get(url)
.catch(error => Rx.Observable.of('error'))
})
.subscribe(
value => console.log('value: ' + value),
err => console.log('error'),
() => console.log('complete')
);
关于javascript - RXJS Angular HTTP 调用 HTTP 请求来检查互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211794/