d3javascript中的变量范围



我想使用以下代码获取全局变量中的数据:

var data;
d3.json ( "file.json" , function(json) {
  data = json;
  console.log(data); //defined
});
console.log(data); //undefined

但问题是,我只是在d3.json函数中定义了数据变量,但它是未定义的。我该如何解决这个问题?

感谢

由于d3请求(如d3.json)是异步的,因此最好将依赖于外部请求的所有代码封装在请求回调中,确保此代码在执行之前能够访问数据。在D3文档中:"异步加载数据时,依赖于加载数据的代码通常应该存在于回调函数中。"

因此,一种选择是将所有代码都放在回调函数中。如果你想把代码分成几个部分,你也可以把请求的响应传递给一个单独的函数,比如

function myFunc(data) {
    console.log(data);
}
d3.json('file.json', function (data) {
    var json = data;
    myFunc(json);
});

相关内容

  • 没有找到相关文章