browser.actions().mouseMove(this.subMenuLink).click().perform();
我们每10秒拨打一次HTTP电话。如果发生错误,可观察到完成,它就不再进行任何调用。如何防止?
答案 0 :(得分:0)
这是正确的行为,当发送complete
或error
通知时,观察员会取消订阅,并且链被处理掉。
您可以使用retry()
运算符重新订阅,但很难通过此简要说明了解您的目标是什么。
Observable.interval(10000)
.switchMap(() => this.http.get(url))
.retry()
.subscribe(data => render(data))
答案 1 :(得分:0)
可观察的takeUntil()。
RxJS实现了takeUntil运算符。您可以传递一个Observable或Promise,它将监视触发takeUntil的项目以停止镜像源Observable。
了解更多信息click here
答案 2 :(得分:0)
试试这个:
let dataX = Observable.interval(10000)
.switchMap(() => this.http.get(url));
let caught = dataX.catch(
Observable.return({
error: 'There was an error in http request'
}))
caught.subscribe((data) => { return render(data) },
// Because we catch errors now, `error` will not be executed
(error) => {console.log('error', error.message)}
)
如果你想要,你可以在出现错误时设置任何条件
if(!data[error]){
render(data)
}
我希望它可以帮助你
答案 3 :(得分:0)
Observable.interval(10000)
.switchMap(() => this.http.get(url)
.map(res => res.json())
.catch (err => Observable.empty()))
.subscribe(data => render(data))