gpt4 book ai didi

angularjs - 如何在 AngularJS 的 $q 中处理单个 404

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

我有一对链接的 $http 和一个使用 $q.all([prmiseA, promiseB]) 的 $http。一切正常,我取回数据并且错误处理没有问题。

除了有时在特定的 http 调用中找不到数据并且这不是错误。

我正在使用服务将逻辑与 UI 分开。我的电话看起来像这样

$scope.Loading = true;
var p = Service.Call(Param1, Param2);
p.then(function () {
$scope.Loading = false;
}, function (reason) {
$scope.Loading = false;
$scope.alerts.push({ msg: "Error loading information " + Param1, type: "danger" });
})

我希望能够做的是在“Service.Call”函数中处理那个 URL 上的 404。这样上面的 UI 代码保持不变。

我的问题是,如果我向可能返回 404 的特定调用添加一个错误处理程序。那么所有错误都会被“处理”,因此我会丢失该调用的错误。

有没有办法在 $q 中“再加注”?

最佳答案

Is there a way to "reraise" in $q?



是的,您可以通过从处理程序返回一个被拒绝的 promise 来重新抛出:
return $q.reject(new Error("Re Thrown")); // this is an actual `throw` in most
// promise implemenentations

万一 $http调用 404 不是错误,您可以从中恢复。 promises 的一个很酷的特性是我们可以从错误中恢复:
var makeCallAndRecover(url){
return $http.get(...).catch(function(err){
// recover here if err is 404
if(err.status === 404) return null; //returning recovery
// otherwise return a $q.reject
return $q.reject(err);
});
}

关于angularjs - 如何在 AngularJS 的 $q 中处理单个 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638033/

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