Javascript Catch in Observable停止来自Observable.interval的HTTP调用
每10秒我们进行一次HTTP调用。如果发生错误,observable将完成,它将不再进行任何调用。如何防止这种情况?当发送Javascript Catch in Observable停止来自Observable.interval的HTTP调用,javascript,angular,rxjs,observable,Javascript,Angular,Rxjs,Observable,每10秒我们进行一次HTTP调用。如果发生错误,observable将完成,它将不再进行任何调用。如何防止这种情况?当发送完成或错误通知取消订阅并处理链时,这是正确的行为 您可以使用retry()操作符重新订阅,但很难从这个简短的描述中看出您的目标是什么 Observable.interval(10000) .switchMap(() => this.http.get(url)) .catch (err => Observable.empty()) .s
完成
或错误
通知取消订阅并处理链时,这是正确的行为
您可以使用retry()
操作符重新订阅,但很难从这个简短的描述中看出您的目标是什么
Observable.interval(10000)
.switchMap(() => this.http.get(url))
.catch (err => Observable.empty())
.subscribe(data => render(data))
takeUntil()是可观察的
RxJS实现takeUntil操作符。您可以向它传递一个可观察项,也可以传递一个承诺,即它将监视触发TakeToll停止镜像源可观察项的项
有关更多信息,请尝试以下操作:
Observable.interval(10000)
.switchMap(() => this.http.get(url))
.retry()
.subscribe(data => render(data))
如果需要,可以在错误出现时设置任何条件
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)
}
Observable.interval(10000)
.switchMap(() => this.http.get(url)
.map(res => res.json())
.catch (err => Observable.empty()))
.subscribe(data => render(data))