Я пытаюсь использовать службу $ q для паузы в итерации, потому что у меня есть условие делать вызовы API в цикле.
Я использовал следующий подход:
function getData(id){
var deferred = $q.defer();
var data;
Restangular.all("some/api").post(id)
.then(function (result) {
data = result;
doSomeFurtheProcessingWithData(data);
console.log("Data fetched for "+id);
deferred.resolve(data);
}, function(error) {
deferred.resolve(data);
});
return deferred.promise;
}
function getDataOneByOne(ids){
for(var i=0;i<ids.length;i++){
console.log("Fetching details for "+ ids[i]);
getData(ids[i]);
}
}
Я ожидаю, что результат будет
Выборка данных для 101
Выборка данных для 101
Выборка данных для 102
Выборка данных для 102
Выборка данных для 103
Выборка данных для 103
Но фактический результат, приведенный выше, код дает
Извлечение подробностей для 101
Извлечение подробностей для 102
Извлечение
данные для 103
Данные получены для 101
Данные получены для
102
Данные получены за 103