Если вы хотите использовать обещание, у вас будет что-то вроде этого:
function handleFile(e) {
new Promise(function(resolve, reject) {
var files = e.target.files, f = files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
if(!rABS) data = new Uint8Array(data);
var workbook = XLSX.read(data, {type: rABS ? 'binary' : 'array'});
/* DO SOMETHING WITH workbook HERE */
};
if(rABS) {
resolve(reader.readAsBinaryString(f));
} else {
resolve(reader.readAsArrayBuffer(f));
}
});
}
Другой пример обещания (как я буду это делать):
function handleFile(e) {
processFile(e).then((res) => {
// do something with reader
});
}
function processFile(e) {
return new Promise(function(resolve, reject) {
var files = e.target.files, f = files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
if(!rABS) data = new Uint8Array(data);
var workbook = XLSX.read(data, {type: rABS ? 'binary' : 'array'});
/* DO SOMETHING WITH workbook HERE */
};
resolve(reader);
});
}
input_dom_element.addEventListener('change', handleFile, false);
Надеюсь, это поможет!