gpt4 book ai didi

javascript - RxJS 在 Ajax 错误后继续监听

转载 作者:行者123 更新时间:2023-12-03 03:50:31 27 4
gpt4 key购买 nike

当内部可观察到的错误(Ajax 请求)时,RxJs 停止监听单击事件。我试图找出如何让事件监听器与按钮单击事件 Hook 并优雅地处理内部 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;
});

关于javascript - RxJS 在 Ajax 错误后继续监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com