【发布时间】:2015-11-29 16:05:13
【问题描述】:
我是 angular $q 服务的新手。我正在使用 $http 和 angular $q 服务来实现异步请求。下面是我的代码,我无法获得后端 api 的结果。 (json)
Services.js:
.service('httpService', function($q, $http, $timeout) {
var asyncRequest = function(url) {
return $http.get(url)
.then(function(response) {
//res is the index of an array in php, which will be encoded.
return response.res;
}, function(response) {
// something went wrong
return $q.reject(response.res);
});
};
return {
asyncRequest : asyncRequest
};
});
Controller.js:
var result = httpService.test(url)
.then(function(data) {
// Line below gives me "undefined"
console.log(data);
}, function(error) {
alert("Error...!");
});
提到的行,给我未定义。 (当然,我可以在main函数中写console.log(data),但这不是一个好习惯,因为我想将result返回给controller)
关于我的$q服务的实现,有没有更简单的方法?
任何想法将不胜感激。
【问题讨论】:
-
应该是
response.data,而不是response.res。如果res是服务器返回的响应数据对象的索引,则只需返回response.data.res。 -
@ryeballar 是的,您的笔记和西蒙的回答相结合,是正确的解决方案。谢谢大家。
标签: javascript angularjs asynchronous q angular-promise