Я хочу реализовать последовательную загрузку файлов (с уровнем XMLHttpRequest2) на сервер. Получил кучу элементов DOM с прикрепленным файлом (FileAPI - W3C черновик). Я хочу загрузить в последовательности (один за другим), но XMLHttpRequest работает асинхронно. Маленький пример кода:
$thumbnails = $('queue').find('.item');
for (var i = 0, len = thumbnails.length; i < len; i++) {
var xhr = new XMLHttpRequest();
xhr.upload.onload = function(ev){}; // fires on upload complete
var fd = new FormData
fd.append('Files['+i+']', $thumbnails[i].file) // insert atached File to FormData
xhr.open("POST", 'server_url', true) // last true means "use asynch rq"
xhr.send(fd)
}
Проблема с этим кодом в том, что цикл FOR повторяется независимо от процесса загрузки файла. Таким образом, начинаются дополнительные загрузки паралелей:
- итерация начинается,
- xhr создан / заполнен,
- загрузка начинается,
- новая итерация
Этот дизайн создает новый объект xhr, даже если предыдущая загрузка не была завершена. Но я все еще хочу придерживаться асинхронной парадигмы загрузки (без блокировки браузера, событий прогресса и т. Д.). Просто не могу понять, как дождаться окончания текущей загрузки и начать новый цикл загрузки.
Есть идеи?