return 从 javascript FileReader onload 事件计算的值
return value calculated from javascript FileReader onload event
我有这个功能:
function doStuff(range, file) {
var fr = new FileReader();
var hash = '';
fr.onload = function (e) {
var out = "stuff happens here";
hash = asmCrypto.SHA256.hex(out);
return hash;
};
fr.readAsArrayBuffer(file);
return hash;
}
现在,函数在 onload 事件完成之前完成,所以 doStuff 总是 returns ""。我认为回调是我需要的,但我是 javascript 的新手,在这种情况下我不知道如何实现它。
使用文件Reader读取文件是异步操作。将您的逻辑放在文件 reader.
的 onload
函数中
function doStuff(range, file) {
var fr = new FileReader();
fr.onload = function (e) {
var out = "stuff happens here";
hash = asmCrypto.SHA256.hex(out);
/* Place your logic here */
};
fr.readAsArrayBuffer(file);
}
您甚至可以传递一个一旦文件被读取就会执行的回调函数。
function doStuff(range, file, callback) {
var fr = new FileReader();
fr.onload = function (e) {
var out = "stuff happens here";
hash = asmCrypto.SHA256.hex(out);
/* Assuming callback is function */
callback(hash);
};
fr.readAsArrayBuffer(file);
}
我有这个功能:
function doStuff(range, file) {
var fr = new FileReader();
var hash = '';
fr.onload = function (e) {
var out = "stuff happens here";
hash = asmCrypto.SHA256.hex(out);
return hash;
};
fr.readAsArrayBuffer(file);
return hash;
}
现在,函数在 onload 事件完成之前完成,所以 doStuff 总是 returns ""。我认为回调是我需要的,但我是 javascript 的新手,在这种情况下我不知道如何实现它。
使用文件Reader读取文件是异步操作。将您的逻辑放在文件 reader.
的onload
函数中
function doStuff(range, file) {
var fr = new FileReader();
fr.onload = function (e) {
var out = "stuff happens here";
hash = asmCrypto.SHA256.hex(out);
/* Place your logic here */
};
fr.readAsArrayBuffer(file);
}
您甚至可以传递一个一旦文件被读取就会执行的回调函数。
function doStuff(range, file, callback) {
var fr = new FileReader();
fr.onload = function (e) {
var out = "stuff happens here";
hash = asmCrypto.SHA256.hex(out);
/* Assuming callback is function */
callback(hash);
};
fr.readAsArrayBuffer(file);
}