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... }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |