Javascript D3.js-从CSV文件加载数据并在函数调用外部使用
似乎,由于调用d3.csv时回调的异步性质,回调中的变量在外部是不可访问的。有解决办法吗 这是我的密码-Javascript D3.js-从CSV文件加载数据并在函数调用外部使用,javascript,d3.js,Javascript,D3.js,似乎,由于调用d3.csv时回调的异步性质,回调中的变量在外部是不可访问的。有解决办法吗 这是我的密码- var cprices; d3.csv("../data/crudeprices.csv", function(data){ cprices = data; getCrudePrices(data); }); function getCrudePrices(data){ for(var i = 0; i < data.length; i++) {
var cprices;
d3.csv("../data/crudeprices.csv", function(data){
cprices = data;
getCrudePrices(data);
});
function getCrudePrices(data){
for(var i = 0; i < data.length; i++) {
//cprices.push(data[i].price);
//console.log(cprices[i]);
}
}
console.log("cprices " + cprices);
我想读取csv文件并将数据加载到回调外部的数组中。但这似乎不受支持。是否有解决方案/解决方法?
参考-可能的解决方案:
d3.csv。。。调用是异步的,所以当您到达console.log时,它可能不会完全执行
建议,作为一个中间黑客,把睡眠暂停几秒钟,看看这是否有帮助
如果是这样的话,您可能希望重新构造代码,以考虑调用的异步性质。这可能意味着从d3.csv调用内部处理所有逻辑您尝试过吗?它应该可以工作,因为您在回调中调用函数。虽然我不知道你对我有什么打算。将数据分配给cprices,然后将数据推送到cprices。您只需在异步回调的作用域之外声明存储数据的变量。我已经尝试过很多次了。但它不起作用。在我看到作业不起作用后,我试着推送数据。我还在d3.csv之外声明变量cprices。用我声明变量的行更新了代码