获得承诺而不是对象

时间:2015-07-23 04:49:10

标签: angularjs

我试图从获取API请求获取数据,但我无法做到。

// service

function getGithubInfo() {
  return $http.get('https://api.github.com/users/test') 
    .success(function(data) { 
      return data; 
    }) 
    .error(function(err) { 
      return err;   
    }); 
};

// controller

function getGithubInfo() {
  vm.githubAccount = contactsService.getGithubInfo();
  console.log(vm.githubAccount);
}

我在控制台而不是Promise {$$state: Object}获得$object

  

如何获取数据数组?

2 个答案:

答案 0 :(得分:4)

由于您正在返回$http服务,因此您将获得一个承诺,以便从承诺中获取数据,并执行此类操作。

  function getGithubInfo() {
      contactsService.getGithubInfo().then(function(res){
            vm.githubAccount = res.data;
            console.log(vm.githubAccount);
        })

    }

答案 1 :(得分:1)

添加了then函数,当我们从异步服务调用获得响应并且响应被包装在promise对象的data属性中时触发。

//Service

    function getGithubInfo() {
      return $http.get('https://api.github.com/users/test')
        .then(function(response) {    //Added this then  function
          return response.data;
        })
        .success(function(data) { 
          return data; 
        }) 
        .error(function(err) { 
          return err;   
        }); 
    };