V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lvfujun
V2EX  ›  问与答

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

  •  
  •   lvfujun · 2015-05-06 15:26:02 +08:00 · 2041 次点击
    这是一个创建于 3507 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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下也不行啊啊啊啊啊啊啊啊啊啊?????
    7 条回复    2015-05-06 22:45:49 +08:00
    feiyuanqiu
        1
    feiyuanqiu  
       2015-05-06 15:29:26 +08:00   ❤️ 1
    异步的吧,alert(window.aaaa) 的时候 load 事件还没有触发?
    lemontv
        2
    lemontv  
       2015-05-06 15:31:55 +08:00   ❤️ 1
    文件读取是异步的,用worker来实现同步吧
    morethansean
        3
    morethansean  
       2015-05-06 15:35:14 +08:00   ❤️ 1
    …… 你的 load 是异步事件啊,用 callback 或者 event 的方式告知外部 load 完成吧。执意要挂在 window 下,外部就不停定时循环看有没有结果吧。
    sneezry
        4
    sneezry  
       2015-05-06 15:41:01 +08:00 via iPhone   ❤️ 1
    用回调吧,要不不知道load何时触发呢
    txlty
        5
    txlty  
       2015-05-06 15:44:54 +08:00   ❤️ 1
    修改量最小的办法,延迟几秒。你就发现window.aaaa有值了。 :-D
    setTimeout(function(){alert(window.aaaa)},3000);
    finian
        6
    finian  
       2015-05-06 15:54:18 +08:00   ❤️ 1
    异步异步似爪牙 似魔鬼的步伐
    lvfujun
        7
    lvfujun  
    OP
       2015-05-06 22:45:49 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.