#angularjs
#angularjs
Вопрос:
У меня есть функция внутри службы, которая выполняет запрос $http.get из массива
var ids = [1,2,3]
var extensionPromises = [];
for (var i = 0 ; i < extensions.length ; i ) {
var myPromise = myHttpService.getOneExtension(ids[i]);
extensionPromises.push(myPromise);
}
return $q.when(
Promise.all(extensionPromises).then(function(all){
$rootScope.$broadcast("allReady");
return true;
}).catch(function(error){
var e = {};
e.error = error;
e.error.type = "http.get";
return (e);
})
);
Которые отправляют идентификатор в простой $http.get( myUrl id).then()...
, все работают нормально, но когда я вижу, что XHR получает информацию в консоли, она разрешается в обратном порядке, то есть 3, 2, 1.
Это нормально?
Ответ №1:
Нет никаких гарантий в порядке разрешения нескольких асинхронных запросов. Они зависят от сетевого времени, времени сервера и т.д. Даже 2 запроса к одной и той же конечной точке могут не возвращаться в том же порядке, в котором они были отправлены
Комментарии:
1. Я тоже об этом подумал, но я всегда получаю один и тот же результат и просто странно…
2. также нет необходимости использовать
Promise.all
внутри$q.when
… можно использовать$q.all()