我正在尝试在JavaScript中读取将数据存储在对象数组中的数据文件(.csv):
var myarr = [];
d3.csv("file.csv").then(
function(data) {
myarr = data;
console.log(myarr[0]);
}
);
console.log(myarr[0]);
我正在使用d3版本5。该函数内部的数据准备就绪,但外部尚不可用。我知道这是因为d3使用Promise,但是我已经尝试弄清楚一段时间了,如何在d3.csv命令之外的数组中使数据可用。我正在使用jsPsych进行实验,并且需要csv文件中的信息作为jsPsych命令的输入。有人有什么建议吗?预先谢谢你。
您的代码会将数据分配给全局变量,问题是,当您在范围之外登录时,该变量尚未分配。
D3基于此概念构建,您不必在其他地方维护数据及其生命周期。
如果您真的想访问数据,可以执行以下操作:
创建一个计时器,每秒检查一次数据是否已初始化。请记住,您仍然需要处理异常并且可以无限期地运行除非您清除超时。
var myarr = [];
d3.csv("file.csv").then(
function(data) {
myarr = data;
console.log(myarr[0]);
}
);
var timer = setTimeout(function(){
if(myarr.length > 0){
console.log(myarr[0]);
clearTimeout(timer );
}
}, 1000);