AngularJS $ q. Odroczona kolejka

Mam tablicę (np. Jest to kolejka plików):

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

KażdyfileDef iplik wyślij do funkcji wysyłania, która powrócifileDef.promise i zadzwońfileDef.resolve lubfileDef.reject po przesłaniu.

Chcę ładować pliki w kolejności: następne ładowanie pliku po załadowaniu poprzedniego pliku.

Teraz używam

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();
      })
    }
  }
}

Ale to wydaje się złe. Jak pisać lepiej?

questionAnswers(1)

yourAnswerToTheQuestion