加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS – 等待多个资源查询完成

发布时间:2020-12-17 09:11:49 所属栏目:安全 来源:网络整理
导读:我有一个单独的工厂用ngResource定义: App.factory('Account',function($resource) { return $resource('url',{},{ query: { method: 'GET' } });}); 我对这个工厂定义的查询方法进行多次调用。呼叫可以异步发生,但我需要等待两个呼叫完成,然后才能继续:
我有一个单独的工厂用ngResource定义:
App.factory('Account',function($resource) {
    return $resource('url',{},{
        query: { method: 'GET' }
    });
});

我对这个工厂定义的查询方法进行多次调用。呼叫可以异步发生,但我需要等待两个呼叫完成,然后才能继续:

App.controller('AccountsCtrl',function ($scope,Account) {
    $scope.loadAccounts = function () {
        var billingAccounts = Account.query({ type: 'billing' });
        var shippingAccounts = Account.query({ type: 'shipping' });

        // wait for both calls to complete before returning
    };
});

有没有办法做到这一点与ngResource定义的AngularJS工厂,类似于jQuery的$ .when()。then()功能?我不喜欢添加jQuery到我当前的项目。

你会想使用promises和 $q.all()。

基本上,你可以使用它来包装所有的$ resource或$ http调用,因为他们返回promise。

function doQuery(type) {
   var d = $q.defer();
   var result = Account.query({ type: type },function() {
        d.resolve(result);
   });
   return d.promise;
}

$q.all([
   doQuery('billing'),doQuery('shipping')
]).then(function(data) {
   var billingAccounts = data[0];
   var shippingAccounts = data[1];

   //TODO: something...
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读