AngularJS $ q. Отложенная очередь

У меня есть массив (например, это очередь файлов):

[{deferred: fileDef, data: file}, {...}, ...]

каждыйfileDef а такжефайл отправить, чтобы загрузить функцию, которая возвращаетfileDef.promise и позвонитьfileDef.resolve или жеfileDef.reject после загрузки.

Я хочу загружать файлы по порядку: загрузка следующего файла после загрузки предыдущего.

Сейчас пользуюсь

var queue = [];
var uploading = false;

//file input callback call each time the user selects files
function addAndUpload (file) {

  queue.push({deferred: $q.defer(), data: file});

  if (!uploading) recurceQueue();

  function recurceQueue () {
    if (queue.length) {
      uploading = true;
      var fileObj = queue.shift();
      upload(fileObj.deferred, fileObj.data);

      fileObj.deferred.promise.finally(function () {
        uploading = false;
        recurceQueue();
      })
    }
  }
}

Но это кажется плохим. Как лучше написать?

Ответы на вопрос(1)

Ваш ответ на вопрос