Как назначить FileReader base64 в переменную? - PullRequest
0 голосов
/ 04 декабря 2018

Я попытался напечатать данные base46, и они приходят по:

var fileData;
var files = document.getElementById('pickUpFileAttachment').files;
if (files.length > 0) {

    var promise = getBase64(files[0]);
    promise.then(function (result) {

        fileData = result;
        console.log(result);
    });

}

function getBase64(file, onLoadCallback) {

    return new Promise(function (resolve, reject) {
        var reader = new FileReader();
        reader.onload = function () {
            resolve(reader.result);
        };
        reader.onerror = reject;
        reader.readAsDataURL(file);
    });
} 

В console.log(result) данные присутствуют, но когда я назначаю их на fileData и пытаюсь утешить их после окончанияgetBase64() функция я получаю undefined.Как я могу присвоить данные base64 переменной?

console.log("displaying the 64base data");
console.log(fileData);

Это просто показало мне undefined из fileData значения.enter image description here

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Promise асинхронный, и, кажется, вы хотите получить fileData синхронно.В этом случае, когда ваше fileData выполнено, но ваше обещание не разрешается, оно вызывается асинхронно.В этом случае вы можете использовать await.

var fileData = await getBase64(files[0]).catch(err=>{console.log(err});

0 голосов
/ 04 декабря 2018

В конце getBase64() функция fileData не назначена пока , потому что в этот момент .then обратный вызов обещания не был вызван.

Единственное место, где онаустановлен и определен в обратном вызове обещания .then.И, как вы заявили, вы получаете данные в console.log(result).

. Вы должны ознакомиться с асинхронным JS, вот несколько статей:

https://medium.com/codebuddies/getting-to-know-asynchronous-javascript-callbacks-promises-and-async-await-17e0673281ee

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...