I have this function:
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;
}
Right now, the function completes before the onload event is finished, so doStuff always returns "". I think a callback is what I need, but I'm new to javascript, and I can't wrap my mind around how to implement it in this case.
The FileReader result property returns the file's contents. This property is only valid after the read operation is complete, and the format of the data depends on which of the methods was used to initiate the read operation.
The FileReader. onload property contains an event handler executed when the load event is fired, when content read with readAsArrayBuffer, readAsBinaryString, readAsDataURL or readAsText is available.
The FileReader object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read.
File reading using File Reader is asynchronous operation. Place your logic inside the onload
function of file reader.
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);
}
You can even pass a callback function that will be executed once the file is read.
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With