承诺不返回Angular.js中的目标文件

时间:2015-11-18 04:16:58

标签: javascript angularjs promise

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文件呢?

2 个答案:

答案 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);
});