Я пытаюсь написать цикл, который выполняет множество HTTP-запросов и добавляет каждый ответ в список.Angular - для Loop HTTP Callback/Promise
Однако, я не думаю, что я собираюсь сделать это совершенно правильно.
Я думаю, что я не выполняю требуемые обещания правильно. Журнал консоли после цикла for показывает массив myList как пустой.
Код:
var _myList = []
function getStuff() {
var deferred = $q.defer()
var url = someUrl
$http.get(url).success(function(response) {
if (response.array.length > 0) {
// loop starts here
for (var i=0; i < response.array.length; i++) {
getThing(response.array[i].id);
};
// check the varibale here
console.log(_myList);
deferred.resolve('Finished');
} else {
deferred.resolve('No stuff exists');
};
}).error(function(error) {
deferred.reject(error);
});
return deferred.promise;
};
function getThing(thindId) {
var deferred = $q.defer()
var url = someUrl + thingId;
$http.get(url).success(function(response) {
_myList.push(response);
deferred.resolve(response);
}).error(function(error) {
deferred.reject(error);
});
return deferred.promise;
};
[Это] (http://stackoverflow.com/questions/13951456/using-offferred-with-nested-ajax-calls-in-a-loop) выглядит многообещающим, просто конвертируйте $ .ajax в $ http –
Имеет ли значение, выполняются ли они параллельно или вы хотите, чтобы они выполнялись последовательно ? – jusopi