[解決済み] AngularJS - 複数のリソースクエリが完了するのを待つ
2022-10-26 02:03:34
質問
ngResourceで定義したファクトリーを1つ持っています。
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
};
});
jQueryの$.when().then()機能のように、ngResourceで定義したAngularJSのファクトリーでこれを行う方法はありますか?私は現在のプロジェクトにjQueryを追加しないことを希望しています。
どのように解決するのですか?
プロミスを使い $q.all() .
基本的に、$resourceや$httpの呼び出しはプロミスを返すので、これを使用してすべての呼び出しをラップすることができます。
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...
});
関連
-
[解決済み】typeerrorは、未定義のプロパティ'data'を読み取ることができません。
-
[解決済み】Angularjsのng-viewが動作しない。
-
[解決済み] angularJSのSTATEを理解する
-
[解決済み] 適用がすでに進行中のエラー
-
[解決済み] どのようにangularJSでrouteProviderとlocationProviderを設定するのですか?
-
[解決済み] AngularJS の $http と $resource
-
[解決済み] AngularJSのコントローラを指定する:ngControllerと$routeProviderを使用する利点
-
[解決済み] AngularJSのng-repeatでキーと値を反復処理する方法は?
-
[解決済み] ng-modelとng-bindの違いは何ですか?
-
[解決済み] ng-repeat内のng-click関数にパラメータを追加しても、うまくいかないようです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】angularのonLoadとng-initの違いについて
-
[解決済み] select 要素のデフォルト値を設定するための ng-option の使用方法
-
[解決済み] AngularJSのng-showとフェードアニメーション
-
[解決済み] ng-repeat内で$indexを使用して、クラスを有効にしてDIVを表示するにはどうすればよいですか?
-
[解決済み] エラーです。[$injector:unpr] 不明なプロバイダです。ルートプロバイダ
-
AngularJS がエラー $digest already in progress を報告する
-
[解決済み] ngInject'を本当に書く必要があるのか?
-
[解決済み] Angular.js: $evalの仕組みとバニラevalとの違いは何ですか?
-
[解決済み] angularJSの::の意味するところ
-
[解決済み] ng-classを使った複数クラスの追加