Как я могу заставить работать .pu sh в FileReader.onload ()? - PullRequest
0 голосов
/ 11 января 2020

У меня есть следующий код, в котором я пытаюсь прочитать файл с помощью FileReader и поместить его содержимое в массив. Только после того, как все данные были переданы, я хочу продолжить. Вот что у меня сейчас:

    const confirm = () => {

        var reader = new FileReader();
        let images = [];
        reader.onload = function(e) {
            images.push(e.target.result);
        };
        reader.readAsDataURL(formValues.images[0].file);
        console.log('images base 64');
        console.log(images); // this prints the empty array. 

    };

Я хочу продолжить только после того, как изображения были обновлены с содержимым файла. Как я могу это сделать?

- edit -

Я хочу добавить несколько файлов в массив, поэтому я попробовал следующее.

    var reader = new FileReader();
        let images = [];
        reader.onload = function(e) {
            images.push(e.target.result);
            console.log('images base 64');
            console.log(images);
        };
        for (let i = 0; i < formValues.images.length; i++) {
            reader.readAsDataURL(formValues.images[i].file);
        }

Но это выдает ошибку «InvalidStateError: объект находится в недопустимом состоянии».

1 Ответ

0 голосов
/ 11 января 2020

Вы пытаетесь получить результат до его загрузки. Переместите console.log (images) в функцию загрузки.

const confirm = () => {
        var reader = new FileReader();
        let images = [];
        reader.onload = function(e) {
            images.push(e.target.result);
             console.log(images);
        };
        reader.readAsDataURL(formValues.images[0].file);
        console.log('images base 64');          
    };
...