function getJSON(url){
return $http.get(url).success(function(response){
var result = response['entries'][0];
return result;
});
};
我认为$ http返回了承诺,所以我做了以下内容:
getJSON(url).then(function (result) {
console.log(result);
})
然而,当我记录结果时,我没有得到我在超时函数中记录的JSON文件,而是获得了一个HTML响应文件。这就是我最终的结果:
Object {data: Object, status: 200, config: Object, statusText: "OK"}
你知道为什么会这样做以及如何获取我在$ timeout函数中记录的JSON文件呢?
答案 0 :(得分:2)
将您的方法更改为:
function getJSON(url){
return $http.get(url).then(function(response){
var result = response.data['entries'][0];
return result;
});
};
PS:最初你在问题中有一个$timeout
,情况有所不同。在这种情况下,.success
应该可以正常工作。唯一的问题是,在.success
调用
答案 1 :(得分:0)
$http
确实会回复承诺。 (编辑我犯了一个错误)并且它的任何子方法也将返回一个承诺。
更新了anser:不要在success()
方法中返回任何内容。 error()
或then()
试试这个它会给你一个承诺
function getJSON(url){
return $http.get(url)
};
getJSON(url).then(function (result) {
console.log(result);
});
P.S。如果你想拥有像你在代码中所做的那样的业务。我建议你使用$q
function getJSON(url){
var d = $q.dever();
$http.get(url).then(function (res){
d.resolve(res['entries'][0])
});
return d.promise;
};
getJSON(url).then(function (result) {
console.log(result);
});