我想通过使用以下代码获取全局变量中的数据:
var data; d3.json ( "file.json",function(json) { data = json; console.log(data); //defined }); console.log(data); //undefined
但问题是我只是在d3.json函数中定义数据变量,但是它是未定义的.
我该怎么解决这个问题?
谢谢
解决方法
因为d3请求(如d3.json)是异步的,所以最好的做法是在请求回调中包含所有依赖于外部请求的代码,确保该代码在执行前可以访问数据.
From the D3 docs:“当异步加载数据时,依赖于加载的数据的代码通常应在回调函数中.
所以一个选择是将所有的代码放在回调函数中.如果您想将代码分成几部分,您还可以将请求中的响应传递给单独的函数,如下所示:
function myFunc(data) { console.log(data); } d3.json('file.json',function (data) { var json = data; myFunc(json); }