Javascript 返回在子函数中更新的变量
请检查以下代码:Javascript 返回在子函数中更新的变量,javascript,callback,Javascript,Callback,请检查以下代码: function loadCSV(fileInput) { var reader = new FileReader(); reader.readAsText(fileInput); var result = {}; var file = {}; var error = {}; reader.onload = function(evt) { var csv = evt.target.result; v
function loadCSV(fileInput) {
var reader = new FileReader();
reader.readAsText(fileInput);
var result = {};
var file = {};
var error = {};
reader.onload = function(evt) {
var csv = evt.target.result;
var data = $.csv.toArrays(csv);
file[fileInput.name] = data;
result['file'] = file;
console.log(result);
}
reader.onerror = function() {
error = {
'message': 'Unable to read ' + fileInput.name
}
result['error'] = error;
}
console.log(result);
return result;
}
读取器.onload
部分中的结果
是正确的,但返回的结果
是空的。我知道这是因为我正在更新子函数读取器中的结果。onload
,我还知道使用callback forloadCSV
可以解决问题。但是我想知道是否有任何方法可以使loadCSV
返回更新的结果
谢谢。任何附加到文件阅读器的事件处理程序。onload
将是一个异步函数,这意味着当它说它完成时,它就完成了。如果要对结果执行某些操作,则必须在处理函数内部执行。查找承诺模式,例如,filereader API是异步的,外部函数在执行回调之前返回。不能从异步函数返回。另请参见@FelixKling-这是一条很好的线索。