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 for
loadCSV
可以解决问题。但是我想知道是否有任何方法可以使
loadCSV
返回更新的
结果


谢谢。

任何附加到
文件阅读器的事件处理程序。onload
将是一个异步函数,这意味着当它说它完成时,它就完成了。如果要对结果执行某些操作,则必须在处理函数内部执行。

查找承诺模式,例如,filereader API是异步的,外部函数在执行回调之前返回。不能从异步函数返回。另请参见@FelixKling-这是一条很好的线索。