文件阅读器需要更多时间来加载
Is FileReader take more time to load?
下面是我的代码
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);
我从控制台得到.log首先打印"22222"和未定义,然后打印"111111"。
为什么"11111"不先打印?
当你这样做时
FR.onload = function(e) {... }
您正在FileReader
上设置回调,该回调在读取操作成功完成时调用。
现在,脚本继续运行console.log("22222");
一段时间后,调用回调,您会看到11111
。
您的代码FR.onload = function(e) { ... }
部分只是为FR
对象定义一个处理程序。 像readAsDataURL()
这样的FileReader
方法是异步的 - 程序在执行FR.readAsDataURL(...)
语句后继续。
稍后,当文件读取完成后,您为 FR.onload
指定的函数将运行。 这是在您的console.log("22222");
声明之前还是之后发生的是不确定的。
相关文章:
- 对于加载时间过长的循环来说是巨大的
- 谷歌如何确定网站加载时间
- 指令加载真的很长,检查加载时间的方法
- 尝试从控制器加载带有json数据的Simile时间线
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 如何使用队列呈现多个HighCharts以防止加载时间过长
- Javascript加载时间过长
- 如何在特定时间重新加载page.php,例如:07:45.非持续时间,例如:每5秒
- 如何从某个时间开始预加载HTML5视频
- 如何计算angular JS应用程序(单页应用程序)的页面加载时间
- 在正确的时间加载缓存的字体
- 在特定时间加载网站的部分内容
- audio.js:是否可以在特定时间加载音频
- 我怎么能得到不同的部分/框/图像我的网站在同一时间加载
- MVC淘汰.儿童下载列表没有't第一时间加载模型数据
- 三星智能电视时间加载问题
- 包括花很长时间加载,你可以看到他们加载
- JavaScript:为表单添加时间加载功能
- IE:HTML选择与巨大的选项需要大量的时间加载
- Angularjs下拉多选需要很长时间加载