ngResource 如何将承诺附加到数组

How does ngResource attach a promise to an array

我正在尝试了解 AngularJS 中的 ngResource 如何能够 return 一个数组,但还允许您在其上附加一个 .$promise 以获得 promise 对象。

基本上从下面的例子来看,如果你只是调用查询函数,你会得到一个空数组(当 promise 解析时填充)。

不过,return值似乎也有一个可以访问的$promise属性。这对我来说很奇怪,因为我不确定如何将承诺附加到数组,只是一个对象。关于 javascript 一定有什么我在这里遗漏了,也许你可以澄清一下。

例如来自 angular 网站:

// We can retrieve a collection from the server
var cards = CreditCard.query(function() {
  // GET: /user/123/card
  // server returns: [ {id:456, number:'1234', name:'Smith'} ];

但您也可以使用 $promise 属性:

访问原始 $http promise
var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123})
    .$promise.then(function(user) {
      $scope.user = user;
    });

angular 能以某种方式给数组一个 $promise 属性 吗?

ngResource returns 每个方法的空 Resource 实例或 Array 实例。这两个实例都被赋予了 $promise 和 $resolved 属性,以便能够添加承诺调用或直接在 $scope 中使用结果。

如果我没记错的话 AngularJS 曾经在 $scope 属性.

上设置此值时查看这些属性

有更多库提供数组自定义方法(如 jQuery)。

ng资源来源:

return 值:

https://github.com/angular/bower-angular-resource/blob/master/angular-resource.js#L562

已添加承诺:

https://github.com/angular/bower-angular-resource/blob/master/angular-resource.js#L637