为什么AngularJS资源会返回承诺并解决?

时间:2014-03-07 00:42:53

标签: javascript angularjs

我有一个返回JSON列表的超级简单服务:

angular.module('hostService', ['ngResource']).
    factory('Host', function($resource){
      return $resource('/api/v1/host', {}, {
        'query':   {method:'GET',  isArray : true},
      });
  });

我打电话的时候:

$scope.hosts = Host.query(function(d) {
    console.log(d);
});

我收到了

[Resource, Resource, Resource, Resource, Resource, Resource, Resource, Resource, $promise: Object, $resolved: true]

最后是什么废话?我想迭代这些项目并做一些事情:

$scope.hosts = Host.query(function(d) {
            for(i in $scope.hosts) {
                doSomething($scope.hosts[i]);
            }
        });

但现在必须检查它们不是“承诺”或“已解决”。

1 个答案:

答案 0 :(得分:-1)

您正在尝试将该函数作为请求中的参数传递。 '$ resource'返回一个promise,您可以使用它从服务器返回结果时迭代结果:

您需要注入$log才能使代码生效

Host.query().$promise.then(
  //success
  function(results) {
    $scope.hosts = results;
    results.forEach(results, function(val,key) { $log.info(key + ' : ' + val); });
  },
  //error
  function(err) {
    $log.error(err);
  }
);