当出现内部可观察到的错误(Ajax请求)时,RxJs停止侦听单击事件。我试图弄清楚如何使事件侦听器挂接到按钮click事件并优雅地处理内部ajax错误。
这是我的示例代码和指向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
您可以使用catch
运算符(或catchException
别名)来捕获和处理可观察对象中发生的错误,以便不会将错误通知给订户。
忽略错误:
return Rx.Observable
.when(testAjax())
.catch(Rx.Observable.empty()); // continues with an empty obs after error.
处理错误:
var empty = Rx.Observable.return('default value');
return Rx.Observable
.when(testAjax())
.catch(function (error) {
console.log('error:', error);
return empty;
});
有什么想法吗?没有JS库。 编辑:我做了几次回拨尝试。老实说,我很难理解他们。下面是我的最后一次尝试:
问题内容: 我想在点击提交按钮时验证WordPress帖子上的用户条目,显示错误消息是否存在问题,如果一切正常,则提交表单。我有一个PHP函数进行检查,如果输入的数据还可以,则返回,否则返回一些错误代码。以下JavaScript发出AJAX请求,并应在成功检查后继续提交表单,但不会: 该代码是根据WPSE问题改编的,该问题最初对我不起作用,因为未提交表单。我发现,如果绑定到的jQuery函数返回t
我正在创建一个应用程序,其中我从服务器下载一些数据。在后台运行时,我希望连接应该继续运行,以便可以下载数据。我知道在app里有方法 当应用程序进入后台时调用。但由于连接是在viewController中创建的,如何在appDelegate中管理它 还有其他方法可以做到这一点吗?我已经通过了这个链接,但是有一个简单的实现方法吗?
问题内容: 为什么每当我将ajax放入for循环中时,它都无法很好地同步? 例如,我的代码是: 为什么它先调用Ajax查询?是否有可能让ajax查询在继续之前完成?因为它在完成填充之前就清除了数组。:/ 问题答案: 首先,您确实需要了解Ajax调用是如何异步的(这就是Ajax中的“ A”所代表的意思)。这意味着调用仅启动ajax调用(它将请求发送到服务器),其余代码愉快地继续运行。有时,在其余代码
在我的spring integration应用程序中,我有一个异步网关方法,它指定了errorChannel。 On Error-我希望通过向ErrorChannel注册集成流来处理错误(我能够成功地做到这一点)。 一旦错误被处理和处理,我可能需要有条件地发送到另一个通道进行进一步处理,并在最后回复回网关。实现这一点的最佳方法是什么? 示例-> 我如何做到这一点?
问题内容: 怎么可能 等到动作完成后再继续循环,我不能得到$ this var,因为它具有最后一个值,对不起我的英语,谢谢!!! 问题答案: 选项1:切换到处理程序中数组中的下一个元素。 选项2:同步发出Ajax请求: 全球: 或直接在请求中: });