Angularjs angjuar-返回$http承诺而不是预期对象的服务
我正在构建我的第一个AngularJS应用程序,并且被困在这个(应该是简单的)问题中 我有一个服务“vehicleService”,它完成所有$http功能。然后检查操作是否成功,然后生成一个包含状态代码的新对象,以及预期返回对象或错误列表;它能正确地执行Angularjs angjuar-返回$http承诺而不是预期对象的服务,angularjs,Angularjs,我正在构建我的第一个AngularJS应用程序,并且被困在这个(应该是简单的)问题中 我有一个服务“vehicleService”,它完成所有$http功能。然后检查操作是否成功,然后生成一个包含状态代码的新对象,以及预期返回对象或错误列表;它能正确地执行 vehicleService.getVehicles = function() { return $http.get(url) .then(function(result
vehicleService.getVehicles = function() {
return $http.get(url)
.then(function(result) {
$log.log('OKAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.data = result.data;
$log.log(returnObject);
return returnObject;
})
.catch(function(result) {
$log.log('NOWAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.errorList = result.data.modelState;
return returnObject;
});
我的问题是,当我试图将returnObject返回给控制器时,我得到的是$http PROMITE对象而不是returnObject
我猜这是因为行return$http.get(url),但它不应该先执行,然后执行,然后传递returnObject吗
编辑:忘记更改标题了,$http是一个异步函数,您可能需要
vehicleService.getVehicles = function(callback) { $http.get(url)
.then(function(result) {
$log.log('OKAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.data = result.data;
$log.log(returnObject);
callback(returnObject);
})
.catch(function(result) {
$log.log('NOWAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.errorList = result.data.modelState;
callback(returnObject);
});}
或者,您应该使用$scope.returnObject将函数中的代码替换为:
$http({ method: 'GET', url: 'url' }).
success(function (result) {
$log.log('OKAY');
var returnObject = {};
returnObject.status = result.status;
returnObject.data = result.data;
$log.log(returnObject);
return returnObject;
}).
error(function (result) {
$log.log('NOWAY');
});
你是在回报承诺。更改后,第二行应为
$http.get(url)
。回调不需要返回,这意味着我不能使用then
操作承诺,对吗?如果要在承诺解析函数内设置值,则必须从服务返回承诺,然后在控制器内使用。。。。使用$scope.returnObject=。。。。。。如果您查看承诺API
,您将看到。然后
和。catch
是处理承诺的正确方法