为了账号安全,请及时绑定邮箱和手机立即绑定

怎么 同步取得 fileReader onload 处理的数据

怎么 同步取得 fileReader onload 处理的数据

慕侠2389804 2018-08-17 14:09:07
.on('xxxxx', function(){   fileReader.readAsArrayBuffer(file)  //读完数据 触发 onload   // 需要传递参数 {"sendData" : data} 到插件流程中  //onload是异步的,data不能同步取得。。   // 用 while(1){ if (data) break; } 的方式 会卡死   //  sleep() 还是会 假死 或者 单线程耗CPU, setTimeout() 不执行。。       function sleep(ms) {        var unixtime_ms = new Date().getTime();        while(new Date().getTime() < unixtime_ms + ms) {}    }    a = 0;       setTimeout(function(){console.log('11111');  a = 1 }, 300);    while ( a == 0 ){      console.log('0000');      sleep(100);   }       // promise 不能 阻止 顺序执行到插件流程    // 进入 一个插件 的处理流程 。。。 });fileReader.onload = function(){  // 处理数据  // 得到 data = xxxx;  data 是全局变量};
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

可以用 promise:

function uploadFile(file) {    return new Promise(function(resolve, reject) {    let reader = new FileReader()
    reader.readAsArrayBuffer(file)
    reader.onload = function() {
        resolve(this.result)
        }
    })
}
uploadFile(file).then(function(result){//处理 result})


查看完整回答
1 反对 回复 2018-09-17
  • 1 回答
  • 0 关注
  • 15880 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信