Angular 异步查询请求

Angular async query request

我有 2 个在 AngularJS 中使用 query 的例子:

第一个:

requests.query().$promise.then(function(requestResponse) {
    myFunction(requestResponse);
});

第二个:

requests.query(function(requestResponse) {
    myFunction(requestResponse);
});

这2个样品一样吗?在这两种情况下,它是否使用承诺来获取数据异步?

是的,除了您可以在第二个示例中传递 null(无参数)以避免混淆外,两者是一回事:

requests.query(null, function(requestResponse) {
         myFunction(requestResponse);
});

从你的问题来看,requests 似乎是由 $resource 服务创建的,它提供了 5 种方法,而 query 方法是这 5 种方法之一。

所有这 5 种方法 return 一个具有 $promise 对象的对象,您可以在其中使用 then() 函数来处理成功和失败的情况。所以你的第一个片段是基于这个的。

现在,所有这 5 个方法也接受最后两个参数作为成功和失败回调,它们是 then() 函数的 shorthand 所以这是你的第二个片段(Angular 内部使用由 $http 调用编辑的 $promise return。

The action methods on the class object or instance object can be invoked with the following parameters:

  • HTTP GET "class" actions: Resource.action([parameters], [success], [error])
  • non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
  • non-GET instance actions: instance.$action([parameters], [success], [error])

你的第二个片段来了。所以总结是,是的,两者是一回事。