Heim > Fragen und Antworten > Hauptteil
大概流程是:
.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 是全局变量
};
大家讲道理2017-04-11 11:10:44
可以用 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
})