var srcData = new Array();
d3.csv("table.csv",function(error,csvdata){
if(error){
console.log(error);
}
else{
srcData = csvdata;
}
console.log(srcData); });
console.log(srcData);
以上代码片中⑨⑩的结果不一样,⑨srcData有数据而⑩srcData为空,因为function是一个异步函数,程序执行完第②行后,function开始解析table.csv文件,同时主程序继续执行第⑩行,所以当执行到第十行时,table.csv很可能还没解析完,srcData为空.
解决上述问题有两种办法:一,如果d3.csv有回调函数,可在回调函数中完成;二,如果没有回调接口,设置一个flag=false,设置一个clock,每隔一段时间读取flag的值,直到flag=true,如下
var srcData = new Array();
var flag = false;
d3.csv("table.csv",function(error,csvdata){
if(error){
console.log(error);
}
else{
srcData = csvdata;
flag = true;
}
console.log(srcData);
});
function clock() {
if (flag) {
isFinished = window.clearInterval(isFinished);
}
}
var isFinished = self.setInterval(clock, 50);
console.log(srcData);