javascript - 如何将 FileReader base64 分配给变量?

标签 javascript jquery html ajax es6-promise

我尝试打印 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() 结束后对其进行控制台时 函数我得到未定义。如何将 Base64 数据分配给变量?

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

它只是向我展示了 fileData 值的 未定义enter image description here

最佳答案

Promise 是异步的,您似乎想同步检索 fileData 。在这种情况下,当您的 fileData 执行但您的 Promise 未解析时,会导致它异步。在这种情况下,您可以使用await

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

关于javascript - 如何将 FileReader base64 分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609853/

相关文章:

javascript - JQuery UI 自动完成 WordPress

javascript - 如何使用 Meteor.js 中的模板助手遍历对象中的两个数组

jquery - 动画后更新类

jquery - PhoneGap + jQuery Mobile在Android 2.1访问HTML5 Sqlite数据库问题

javascript - 从父选择列表创建子类别选择列表

Javascript:检查最小字符串长度

javascript - 您如何使else语句什么都不做?

javascript - 使用 X-editable jQuery 库使用来自 AJAX 请求的数据填充 Select2 标签输入字段

javascript - 如何使用 raphael js 添加额外的路径箭头到指针路径

html - CSS 中 img 的 ALT