js 一个神奇的现象?求解.

2015-05-06 15:26:02 +08:00
 lvfujun
function readerFile(file) {
var reader = new FileReader();
window.aaaa = 'aaaa';
// reader.onload = (function(file) {
// return function(e) {
// // window.aaaa = e.target.result;
// window.aaaa = '1';
// }
// })(file);

reader.addEventListener('load', function(e) {
window.aaaa = e.target.result;
}, false);
reader.readAsDataURL(file);
alert(window.aaaa)
}

以上是我的一个载入文件的函数
alert(window.aaaa)竟然没有被里面的window.aaaa = e.target.result;给修改掉
我要怎么在外面获得到
reader.addEventListener('load', function(e) {
window.aaaa = e.target.result;
}, false);
e.target.result的值啊?????求教为什么把变量挂载到window下也不行啊啊啊啊啊啊啊啊啊啊?????
2030 次点击
所在节点    问与答
7 条回复
feiyuanqiu
2015-05-06 15:29:26 +08:00
异步的吧,alert(window.aaaa) 的时候 load 事件还没有触发?
lemontv
2015-05-06 15:31:55 +08:00
文件读取是异步的,用worker来实现同步吧
morethansean
2015-05-06 15:35:14 +08:00
…… 你的 load 是异步事件啊,用 callback 或者 event 的方式告知外部 load 完成吧。执意要挂在 window 下,外部就不停定时循环看有没有结果吧。
sneezry
2015-05-06 15:41:01 +08:00
用回调吧,要不不知道load何时触发呢
txlty
2015-05-06 15:44:54 +08:00
修改量最小的办法,延迟几秒。你就发现window.aaaa有值了。 :-D
setTimeout(function(){alert(window.aaaa)},3000);
finian
2015-05-06 15:54:18 +08:00
异步异步似爪牙 似魔鬼的步伐
lvfujun
2015-05-06 22:45:49 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX