からの結果を用いてangularJS、1で解決した後、私はいくつかの操作を行います。通話機能2つの約束はコントローラ機能では、他の
- は、この約束のでは約束
- と組織のリストを取得します。 、私はそれらのそれぞれをループしていくつかのデータを抽出し、私のコントローラの属性のいくつかを設定します。
- この操作の1つは、この組織に接続されているすべてのユーザーを収集するための別の約束を呼び出して、内部にループを付けて名前などを抽出することです。
- 私はそれをすべて取得するので、すべての組織が解析され、それらのすべてのユーザーも、ビューを更新する関数を呼び出す必要があります。
私はいくつかのフラグ(orgParsed
とusersParsed
)を設定して動作していますが、それはコード恥ずかしがり屋です。
$q
を使用して2つの約束を待ち、おそらく "then
"内のループを解決して、自分のビュー関数を呼び出す前に解決する方法について聞いたことがあります。しかし、私は2番目の約束が組織IDを収集するために最初の結果を使用するので、このコード変更を適用するのに苦労します。ここで
私の現在のコードです:
this.getOrgData = function() {
return Service.getList().then(function (result) {
var orgCount = result.Objects.length;
var orgParsed = 0;
_.forEach(result.Objects, function (org) {
org.Users = [];
// Some logic here using 'org' data
Service.getUsers(org.Id, 0, 0).then(function (userResult) {
usersParsed = 0;
_.forEach(userResult.Objects, function (user) {
// Some Logic here using 'user.Name'
usersParsed++;
});
orgParsed++;
if (orgParsed === orgCount && usersParsed === userResult.Objects.length) {
self.sortMenuList(); // My view Function
}
});
});
$scope.$broadcast("getOrgData");
});
};
あなたは私がすべての会社のすべてのユーザーが効率的/よりエレガントに解析されてしまったことを確認することができた場合にのみ、私のself.sortMenuList()関数をトリガする方法を参照しています/安全な方法?
「usersParsed」には何が必要ですか?そして、 'doneUsers'は何ですか? – Bergi
$ q.all()は、複数のエンドポイント呼び出しの結果を待つ角度の方法です* – Kraken
doneUsersは間違いでした。 – BlackHoleGalaxy