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