У меня есть функция, которая проверяет наличие записей, и если они существуют, она загружает их для каждого элемента. Это функция, которая происходит в цикле, поэтому мне может быть много записей. Я подумал, что я правильно использовал $ 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;
});
}