我有一個功能,檢查記錄,如果它們存在,它會爲每個項目下載它們。這是一個在循環中發生的函數,因此可以記錄多條記錄。我認爲我正在使用$ Q來緩和每個$ http請求的等待時間,因此它們並不都是同時發生的,但它們仍然在同一時間觸發。
我看過$ q.defer();但不明白如何在我的實現中使用它。如何正確地將每次通話延遲到以前的通話完成?
CheckRecords: function(obj) {
var promise;
var promises = [];
if (obj.BD.img == 'checkedRecord') {
var objBDUrl = 'services/GetSurveyBD/?id=' + obj.BD.ID;
promise = $timeout(function(){
$http.get(objBDUrl, { cache: true }).then(function(response) {
obj.BD.ID = obj.BD.ID;
obj.BD.data = response.data;
});
}, 250);
promises.push(promise);
}
if (obj.MR.img == 'checkedRecord') {
var objMRUrl = 'services/GetMR/?id=' + obj.MR.ID;
promise = $timeout(function(){
$http.get(objMRUrl, { cache: true }).then(function(response) {
obj.MR.ID = obj.MR.ID;
obj.MR.data = response.data;
});
}, 250);
promises.push(promise);
}
$q.all(promises).then(function(){
return obj;
});
}