javascript - FileReader 是否需要更多时间来加载?

标签 javascript html html5-canvas

下面是我的代码

var uploadIDImage = {
    IDPos: {},
    IDNeg: {}
};

var FR = new FileReader();

FR.onload = function(e) {
    console.log("123");
    console.log(e);
    $("#UploadIDPos img").remove();
        $("#UploadIDPos i").hide();
    $('#UploadIDPos').prepend('<img id="IDPosImg" style="width: 140px; height: 80px;"/>');
    var img = document.getElementById('IDPosImg');
  img.src = FR.result;
    uploadIDImage.IDPos.Files = FR.result.split(",")[1];
    console.log("11111");
};

if(e.target.files[0]) {
    FR.readAsDataURL(e.target.files[0]);  
    if(originalIDPosSize === undefined) {
            var size = Math.round(e.target.files[0].size / 1024 / 1024);
            originalIDPosSize = size;
        }
        else {
            totalSize  = totalSize + originalIDPosSize; 
            var size = Math.round(e.target.files[0].size / 1024 / 1024);
        }
        var remainSize = totalSize - size;
        console.log("Remain size : " + remainSize);
        $("#remain-size").text(totalSize - size);
        totalSize = remainSize;
} 

console.log("22222");
console.log(uploadIDImage.IDPos.Files);

我从 console.log 中得到的是首先打印“22222”和未定义,然后是“111111”。

为什么“11111”不先打印?

最佳答案

当你这样做

FR.onload = function(e) {... }

您正在 FileReader 上设置回调,该回调将在读取操作成功完成时调用。

现在您的脚本继续并运行 console.log("22222");

一段时间后,回调被调用,您会看到11111

关于javascript - FileReader 是否需要更多时间来加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35725403/

相关文章:

javascript - 使用 window.print() 时打印输出中的像素化文本

html - Bootstrap 响应列顺序基于字母内容

javascript - 有没有办法从 JS 中的图像手动创建 Base64code

javascript - Canvas 动画变慢

javascript - 如何在 NodeJS 中展开对象数组?

javascript - Vue.js 中 "mounted"axios 中的意外异步操作

javascript - 如何更改 jQuery 中的输入名称

javascript - 链接到页面 anchor 时,如何在那里调用 JS 代码?

javascript - 简单的 Slickgrid 排序不起作用

Javascript、HTML5 Canvas、评分功能