gpt4 book ai didi

angularjs - Restangular 的一般错误处理程序

转载 作者:行者123 更新时间:2023-12-05 00:24:52 28 4
gpt4 key购买 nike

到目前为止,我使用 Restangular 对我的 API 进行了大约 4 次调用,并且在每个调用中,我都在 then 的第二个参数上检查它们,如下所示:

Restangular.all("accounts").getList().then(function() {
console.log("All ok");
}, function(response) {
console.log("Error with status code", response.status);
});

正如您所看到的,这不是一种可维护的方法,因为这会在整个应用程序中创建大量重复的错误处理代码。

据我所知 errorInterceptor存在但是我无法想象用它来创建一个通用的错误处理程序。

我希望也许一些新的想法可以帮助我解决这个问题。

谢谢 :)

最佳答案

我没有检查我们在 promise 链中是否有特定的错误处理程序,而是添加了我的通用错误处理程序,以便在 promise 链的后面可以取消:

Restangular.setErrorInterceptor(
function(response, deferred, responseHandler) {
var generalHandlerTimer = $timeout(function(){
generalErrorHanding(response);
},1);
response.cancelGeneralHandler = function(){
$timeout.cancel(generalHandlerTimer);
};
return true; // continue the promise chain
}
);

以及可能发生错误的调用:
restangularizedUser.patch({
user: {
email:newValue
}
}).then(function(res) {
//Success
}, function(response) {
//Error
//Cancel the general error handler due to I want to handle it on my way
response.cancelGeneralHandler();
$log.debug('Handle the ERROR on my specific way');
});

坏处:
  • 如果需要使用特定的错误处理程序,则需要调用 response.cancelGeneralHandler();

  • 优势:
  • 不需要 hack :)
  • 关于angularjs - Restangular 的一般错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25639889/

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