mam array (fe jest kolejka plików):
[{deferred: fileDef, data: file}, {...}, ...]
Każdy fileDef i plik wyślij przesłać funkcję, która powrotu fileDef.promise i nazywają fileDef.resolve lub fileDef.reject po przesłaniu.
Chcę przesłać pliki w kolejności: następny plik po wczytaniu 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 wydaje się zły. Jak pisać lepiej?
dlaczego dont u obietnicę łańcucha zamiast ?? –
Ponieważ nie oczekuję teraz kolejki o rozmiarze – tamtakoe
Co się stanie, jeśli przesyłanie się nie powiedzie? Czy to nie ma znaczenia? – Bergi