从 Angular 资源中取回承诺

Getting a promise back from an Angular Resource

我正在使用 $resource 在 Angular 中做一些基本的 CRUD 工作,但我认为我不了解如何使用不同的资源方法。

据我所知,"regular" 方法 - save()get() 等是同步发生的,您可以将回调函数传递给 运行如果您想执行 "classic" JS 异步调用,请完成。每个的结果也有一个 $promise 属性 其中 returns 一个承诺,如果你想那样做异步(我愿意!)。

但是除了 get()query() 之外(出于我也不明白的原因),所有方法也有 $ 版本。这些 $ 方法是 .$promise 的快捷方式吗?如果有,为什么没有$get()$query()

是的,ngResource 的文档很难理解。 基本上你需要区分

  • class 操作($resource 的方法)和
  • 实例操作($resource实例的方法)

class 喜欢

var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function(user) {
  user.abc = true;
  user.$save();
});

有一个额外的 属性 $promise 当数据从 $http 请求返回时被解析。这就是为什么这可以写成:

User.get({userId:123})
    .$promise.then(function(user) {
      $scope.user = user;
    });

来自文档:

When the data is returned from the server then the object is an instance of the resource class. The actions save, remove and delete are available on it as methods with the $ prefix. This allows you to easily perform CRUD operations (create, read, update, delete) on server-side data like this:

这就是为什么 user.$save(); 可以在上面示例中的实例上调用的原因。