Я пытаюсь загрузить файлы со своего сервера, а затем запустить Promises для загруженных данных. Моя проблема в том, что кажется, что мои обещания по какой-то причине блокируют все:
Он начинает загрузку ВСЕХ файлов, как только первый файл загружен, он блокирует загрузку других и запускает полную цепочку обещаний обратного вызова onLoad, а затем продолжает загрузку оставшихся файлов. После завершения создания нового файла он блокирует другие загрузки, запускает цепочку обещаний и так далее.
Мой обратный вызов onload содержит следующее:
function(response) {
window.console.log('on load callback...');
var sequence = Promise.resolve();
sequence
.then(function(){
sleep(10000);
window.console.log('sleep 1 is over...');
return 'DONE!';
})
.then(function(){
sleep(10000);
window.console.log('sleep 2 is over...');
return 'DONE!';
})
.then(function(){
sleep(10000);
window.console.log('sleep 3 is over...');
return 'DONE!';
});
}
И моя функция сна следующая:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
В консоли возвращается:
on load callback...
sleep 1 is over...
sleep 2 is over...
sleep 3 is over...
on load callback...
sleep 1 is over...
sleep 2 is over...
sleep 3 is over...
on load callback...
sleep 1 is over...
sleep 2 is over...
sleep 3 is over...
on load callback...
sleep 1 is over...
sleep 2 is over...
sleep 3 is over...
Любая помощь будет оценена.
Я могу понять, что загрузка блокируется, когда выполняется «спящий режим», но я не понимаю, почему он запускает все «спящий режим 1», «спящий режим 2» и «спящий режим 3», прежде чем продолжить загрузку оставшихся файлов.
==== РЕДАКТИРОВАТЬ ====
Я загружаю файлы с помощью «обещанного» XMLHttpRequest и Promise.all (). (http://www.html5rocks.com/en/tutorials/es6/promises/ < / а>)
С уважением, Николас