JavaScript 无法检索 FileReader 变量

JavaScript can't retrieve FileReader variable

我正在尝试从 .CSV 文件中的记录中检索特定字段。我无法在 onload 函数之后访问 record 变量。

var record;

//FileReader to read contents of CSV
var reader = new FileReader();


var file = document.getElementById('csvFileUploadID').files[0];

reader.onload = function(event) {
    reader.readAsText(document.getElementById('csvFileUploadID').files[0]);
    record = reader.result.split(/\r\n|\r|\n/)[1];
    record = record.split(',')[1]
};

//Can't access the 'record' variable here.

我知道这个问题的解决方案可能与关闭有关,但是,我不能完全理解这个概念。

感谢任何帮助。

您可以使用 promises 来处理这种异步代码。

var file = document.getElementById('csvFileUploadID').files[0];

function readRecord(file) {
  return new Promise(function(resolve, reject) {
    var reader = new FileReader();
    reader.onload = function(event) {
        reader.readAsText(document.getElementById('csvFileUploadID').files[0]);
        record = reader.result.split(/\r\n|\r|\n/)[1];
        record = record.split(',')[1];
        resolve(record);
    };
  });
};


readRecord(file).then(function(record) {
 // access record here
});