Нормально ли, что мой запрос $ http разрешается в обратном порядке? (angularjs)

#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()