RxJS继续听了之后阿贾克斯错误 [英] RxJS Continue Listening After Ajax Error
本文介绍了RxJS继续听了之后阿贾克斯错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
RxJs停止监听点击事件时,一个内观察到的错误(Ajax请求)。我试图找出如何保持事件侦听器挂在按钮单击事件,并妥善处理内部Ajax错误。
RxJs stops listening to click events when an inner observable errors (Ajax request). I'm trying to figure out how to keep the event listener hooked to the button click event and gracefully handle the inner ajax error.
下面是我的例子code和链接plunkr
Here is my example code and a link to plunkr
var input = $("#testBtn");
var test = Rx.Observable.fromEvent(input,'click');
var testAjax = function() {
return Rx.Observable.range(0,3).then(function(x){
if(x==2)throw "RAWR"; //Simulating a promise error.
return x;
});
}
test.map(function(){
return Rx.Observable.when(testAjax());
})
.switchLatest()
.subscribe(
function (x) {
console.log('Next: ', x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
http://plnkr.co/edit/NGMB7RkBbpN1ji4mfzih
推荐答案
您可以使用抓
运营商(或 catchException
化名)来捕获和处理发生在可观察到的,错误的,使用户不被通知的错误。
You can use the catch
operator (or the catchException
alias) to catch and handle errors which occur in an observable, so that subscribers are not notified of the error.
忽略错误:
return Rx.Observable
.when(testAjax())
.catch(Rx.Observable.empty()); // continues with an empty obs after error.
处理错误的:
Handle Errors:
var empty = Rx.Observable.return('default value');
return Rx.Observable
.when(testAjax())
.catch(function (error) {
console.log('error:', error);
return empty;
});
这篇关于RxJS继续听了之后阿贾克斯错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文