Показать сообщение отдельно
  #1 (permalink)  
Старый 20.03.2019, 18:08
Новичок на форуме
Отправить личное сообщение для Atari Посмотреть профиль Найти все сообщения от Atari
 
Регистрация: 20.03.2019
Сообщений: 1

Как переписать это на async\await + promise?
Как переписать это на async\await + promise? Проблема в том, что при выходе из функции ещё ни разу не срабатывает событие onload и всегда возвращается пустой массив files, просто не успевают отработать асинхронные методы:

function getFilesFromGalery() {
  var files = [];
  for (let i = 0; i < document.getElementById('gallery').childNodes.length; i++) {
    var xhr = new XMLHttpRequest();
    var imgUrl = document.getElementById('gallery').childNodes[i].src;
    xhr.responseType = 'blob';
    xhr.open('GET', imgUrl);
    xhr.onload = function(e) {
      if (this.status == 200) {
        var myBlob = this.response;
        var filename = 'file_'+ i + '.' + GetFileName(imgUrl);
        var file = new File([myBlob], filename, {type: 'image/' + GetDataType(imgUrl)});
        files.push(file)
      }
    };
    xhr.send();
  }
  return files;
}


А мне в результате нужен именно массив файлов =( Да я знаю, что можно обработать каждый файл отдельно прям в onload, но это мне не подходит. Помогите пожалуйста.
Ответить с цитированием