gpt4 book ai didi

javascript - 如何处理 AngularJS 中的工厂服务错误

转载 作者:行者123 更新时间:2023-11-29 09:53:43 25 4
gpt4 key购买 nike

工厂代码

app.factory('abcFactory', function ($http, Config, $log) {
var serviceURL = Config.baseURL + '/results';
return{
results:function() {
var promise = $http({
method: 'GET',
url: serviceURL,
timeout: Config.httpTimeout
}).then(function(response) {
return response;

}, function(reason) {
$log.error("Request Failed: ", reason)
});

return promise;
}
}
});

Controller 代码

app.controller('abcController',function ($scope, $log,abcFactory, Config)
{

abcFactory.results(function(data){
$scope.results =data;
},function(response)
{
console.log("response"+response);

if(response.status === 0)
{
console.log("gotcha");
$scope.serviceTimedoutError(response.data, response.status, response.config);
} else
{
console.log("gotcha");
$scope.serviceFailure(response.data, response.status, response.config);
}


});
});

$scope.results 在服务返回良好响应时正常填充。

而且,当出现错误时,我可以在控制台上看到来自工厂代码日志的错误消息,内容为 “Request Failed: blah blah”

我的问题:当出现错误时,为什么我在 Controller 中看不到错误消息,它甚至没有在浏览器控制台中打印 "gotcha"。我需要 Controller 中的错误详细信息,以便我可以在 View 中显示它。我不想在工厂中传递 $scope

我在 Controller 代码中做错了什么?

如果我没记错的话,我正在做一些符合 AngularJS Failed Resource GET 的事情但没有得到想要的结果。

最佳答案

看起来您希望 results 函数接受回调,但它的参数列表目前是空的。不过,您正在返回 promise 。

因此要么将 Controller 中的调用更改为:

abcFactory.results()
.success(function() { ... })
.error(function() { ... })

或者改变结果函数本身:

results: function(successCallback, errorCallback) {
var promise = $http(...).success(successCallback).error(errorCallback);
return promise;
}

关于javascript - 如何处理 AngularJS 中的工厂服务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973295/

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