Я работаю над приложением AngularJS. У меня есть следующий массив:
$scope.fruits = [
{url1: 'appleColor', url2: 'appleDetail'},
{url1: 'orangeColor', url2: 'orangeDetail'},
{url1: 'grapesColor', url2: 'grapesDetail'},
];
Теперь я вызываю HTTP GET-запросы следующим образом:
for(var i = 0; i < $scope.fruits.length; i++){
var fruit = $scope.fruits[i];
getFruitColor(fruit.url1).then(function(color){
getFruitDetail(fruit.url2).then(function(detail){
console.log("color is "+ color);
console.log("detail is "+ detail);
}):
});
}
function getFruitColor(url){
return $http({
method: 'GET', url: url, params: {} }).then(getFruitComplete, getFruitFailed);
}
function getFruitDetail(url){
return $http({ method: 'GET', url: url, params: {} }).then(getFruitDataComplete, getFruitDataFailed);
}
function getFruitDataComplete(response) {
return response.data;
}
function getFruitDataFailed(error) {
$log.error('Failed to get fruit data - ' + error.data);
}
function getFruitComplete(response) {
return response.data;
}
function getFruitFailed(error) {
$log.error('Failed to get fruit- ' + error.data);
}
Теперь, поскольку все эти вызовы будут асинхронными, я ожидал, что эти вызовы во вкладке NETWORK, как это (порядок этих вызовов может быть различным из-за асинхронного характера):
getFruitColor ('appleColor')
getFruitColor ('orangeColor')
getFruitColor ('grapesColor')
getFruitDetail ('appleDetail')
getFruitDetail ('orangeDetail')
getFruitDetail ('grapesDetail')
Но то, что я на самом деле вижу во вкладке NETWORK, это:
getFruitColor ('appleColor')
getFruitColor ('orangeColor')
getFruitColor ( 'grapesColor')
getFruitDetail ('grapesDetail')
getFruitDetail ('grapesDetail')
getFruitDetail ('grapesDetail')
I Я новичок в AngularJS и Javascript, и я не понимаю, в чем здесь проблема и почему в гостинице er HTTP Call, url2 последнего элемента массива fruits происходит для каждого элемента в l oop. Может кто-нибудь объяснить, почему это происходит здесь? И что мне нужно сделать, чтобы добиться желаемого результата?