从Angular资源获取承诺

时间:2015-11-25 17:28:07

标签: javascript angularjs promise angular-resource

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

据我所知,“常规”方法 - save()get()等同步发生,如果你想做“经典”,你可以传入一个回调函数来完成“JS异步调用。每个结果都有一个$promise属性,如果你想以那种方式做异步(我做!),它会返回一个promise。

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

1 个答案:

答案 0 :(得分:1)

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

  • 集体诉讼($资源的方法)和
  • 实例操作($ resource实例的方法)

类动作,如

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

来自文档:

  

当从服务器返回数据时,该对象是一个   资源类的实例。操作保存,删除和删除   可以使用$前缀作为方法。这允许你   轻松执行CRUD操作(创建,读取,更新,删除)   像这样的服务器端数据:

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