我想通过使用以下代码来获取全局变量中的数据:
var data; d3.json ( "file.json" , function(json) { data = json; console.log(data); //defined }); console.log(data); //undefined
但是问题是我只是在d3.json函数中定义了数据变量,但是没有定义。我该如何解决这个问题?
谢谢
由于d3请求(如d3.json)是异步的,因此最佳做法是将所有依赖于外部请求的代码包装在请求回调中,以确保该代码在执行之前可以访问数据。来自D3 docs:“异步加载数据时,依赖于已加载数据的代码通常应存在于回调函数中。”
d3.json
因此,一种选择是将所有代码放入回调函数中。如果要将代码分成几部分,还可以将请求的响应传递给一个单独的函数,如下所示:
function myFunc(data) { console.log(data); } d3.json('file.json', function (data) { var json = data; myFunc(json); });