返回子函数中更新的变量

时间:2014-03-06 18:01:35

标签: 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;
        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;
}

result部分中的reader.onload是正确的,但返回的result为空。我知道这是因为我正在更新子函数result中的reader.onload,我也知道使用loadCSV的回调是解决问题的解决方案。但我想知道是否有任何方法可以让loadCSV返回更新的result

感谢。

1 个答案:

答案 0 :(得分:1)

附加到FileReader.onload的任何事件处理程序都将是一个异步函数,这意味着它在完成时就完成了。如果你想对结果做一些事情,那么你将不得不在你的处理函数中做到这一点。