私はAngularJSのオブジェクトを含む配列を持っています。これらのオブジェクトのプロパティ(snooz
)の値に基づいて、私はPOSTリクエスト(getData.sonnzeUpdate()
)を呼び出さなければなりません。配列内の各オブジェクトを調べた後、最後にGET要求を呼び出す必要があります。私の問題は、POST要求の応答(res
in .then(function(res){}
)を得る前に、GET要求(関数$scope.getTableData
内)が実行されることです。AJAXの呼び出しforEachループAngular
angular.forEach(
)と$q
を試しました。それらが終了した後、あなたは、その配列に約束を追加するので、$q.all(notifiedAlarms)
:
は、ここに私のコード・サンプルのコードで
var notifiedAlarms = [];
var d = new Date();
var checkTine = d.getHours() + "-" + d.getMinutes() + "-" + "00";
angular.forEach(snoozedData, function (snoozed_asset, asset_key) {
if (snoozed_asset.snooz == checkTine) {
var data = {};
snoozed_asset.snooz = '';
data.data = snoozed_asset;
var deferred = $q.defer();
getData.sonnzeUpdate(data).then(function (res) {
if (res.status == '200') {
toastr.info('Alarm with property ' + data.data.actualFailureArea + ' is activated');
// $scope.getTableData(); //donot want to call it here. as same call will for multiple time
notifiedAlarms.push(deferred.promise);
} else {
// console.log('Error in update');
}
});
} else {
// no matching snooz
}
});
$q.all(notifiedAlarms).then($scope.getTableData());
ジェネレータはこの種のものにも適していることに注意してください。すべての約束のものをきれいにする。しかし、ダウンレベルジェネレータはまだTSでは問題があります。 –
ここに更新コード – SSS