所以我使用rxjs observables每隔30秒使用interval和repeat来调用一个http请求。但是,当没有互联网连接且可观察的调用onError但是observable永远不会重复。我正在使用也重试当它无法正常工作
有什么建议吗?
这是我的代码
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');
})
答案 0 :(得分:0)
为了避免在请求失败时破坏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')
);