在d3 javascript中的variables范围
我想通过使用下面的代码获取全局variables中的数据:
var data; d3.json ( "file.json" , function(json) { data = json; console.log(data); //defined }); console.log(data); //undefined
但问题是,我只是在d3.json函数中定义的数据variables,但它是未定义的。 我怎么能解决这个问题?
谢谢
因为d3请求(如d3.json
)是asynchronous的,所以最好的做法是将所有依赖于外部请求的代码包装在请求callback中,确保这些代码在执行之前访问数据。 从D3文档 :“当asynchronous加载数据时,取决于加载的数据的代码通常应该存在于callback函数中。”
所以有一个select是将所有的代码放在callback函数中。 如果您想将代码分成几部分,您也可以将请求中的响应传递给一个单独的函数,如下所示:
function myFunc(data) { console.log(data); } d3.json('file.json', function (data) { var json = data; myFunc(json); }