Javascript 访问drop()中加载的表

Javascript 访问drop()中加载的表,javascript,p5.js,import-from-csv,Javascript,P5.js,Import From Csv,我试图通过p5中的drop()函数在草图中加载一个简单的CSV文件。我可以成功地“获取”文件并调用loadTable(),但是我想自动处理加载的表,出于某种原因,我似乎必须让drop()函数在能够访问表之前完全完成 我的小测试草图“获取”一个拖到画布上的文件,将其加载到表中,并在加载后立即尝试打印出getRowCount()。这将返回0。。。。因此,我还设置了一个函数,在单击鼠标时运行getRowCount(),这与预期一样有效 我的测试CSV文件: 我只是部分理解为什么会发生这种情况,我确实不

我试图通过p5中的
drop()
函数在草图中加载一个简单的CSV文件。我可以成功地“获取”文件并调用
loadTable()
,但是我想自动处理加载的表,出于某种原因,我似乎必须让
drop()
函数在能够访问表之前完全完成

我的小测试草图“获取”一个拖到画布上的文件,将其加载到表中,并在加载后立即尝试打印出
getRowCount()
。这将返回0。。。。因此,我还设置了一个函数,在单击鼠标时运行
getRowCount()
,这与预期一样有效

我的测试CSV文件:

我只是部分理解为什么会发生这种情况,我确实不知道如何避免它。我一直在自学Javascript和p5,所以我不知道需要搜索哪些术语来理解这里发生了什么

var myTable;

function setup() {
  var canvas = createCanvas(400, 400);
  canvas.drop(getFile);
}

function draw() {
  background(220);
}

function getFile(file) {
    myTable = loadTable(file.data);

    // Do something with the table *when* I drop it...
    console.log("In getFile function: " + myTable.getRowCount());

    // Doesn't work either...
    extra(myTable);
}

function mouseClicked() {
    console.log("On mouse click " + myTable.getRowCount());
}

function extra(table_) {
    console.log("In extra function: " + table_.getRowCount());
}

我建议当您对P5.js的工作方式有疑问时,请随时查看

loadTable()
函数的参考。它说:

此方法是异步的,这意味着它可能无法在执行草图中的下一行之前完成。在preload()中调用loadTable()可以保证在调用setup()和draw()之前完成操作

在preload()之外,您可以提供回调函数来处理对象:

语法

loadTable(filename, options, [callback], [errorCallback])
loadTable(filename, [callback], [errorCallback])
您需要提供一个回调函数,该函数在
loadTable()
函数异步加载表时触发