Показать сообщение отдельно
  #1 (permalink)  
Старый 31.03.2017, 08:58
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

действия после окончания img.onload
Доброго времени суток!
Задача получить из массива с файлами изображений объекты base64.
Есть простенький кусок кода стянутый с стековера:
function getBase64(file) {
   var reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
     console.log(reader.result);
     return reader.result; //добавляем возврат из функции
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}

и пробуем прогнать массив через эту функцию, например так:
//массив с картинками доступен в переменной test
function getArray(){
var newArray=[];
for(var i=0; i<test.length; i++){
newArray.push(getBase64(test[i]));
}
return newArray;
}

Конечно возвращается пустой массив, т.к. функции не дожидаются завершения события onload и выполняются возвращая в массив undefined. Можно ли сохраняя текущий подход как-то дождаться завершения чтения файла и только тогда продолжить выполнения функций? Ну или другим методом добиться искомого результата?
Ответить с цитированием