我使用d3.json加载了一个json对象并将加载的json文件分配给一个全局变量但是当我将全局变量打印到控制台时它返回undefined,但是当我在chrome控制台中键入全局变量时它返回我需要它。本质上,我只是想加载json对象能够在d3.json函数之外使用它。这似乎是一个相对简单的任务,但我是一个js / d3 newby所以任何帮助都非常感谢!
谢谢!
代码在下面提供
<script type = "text/javascript" source='https://d3js.org/d3.v4.min.js'>
var gapminder;
d3.json("D3_jsondata.json", function(data){
gapminder = data;
});
//above prints in console when i type in gapminder
console.log(gapminder);//prints as 'undefined' in Chrome's console
</script>
答案 0 :(得分:1)
调用.json()可以获得尚未加载的http响应正文的承诺。尝试在json的回调中开始渲染!
答案 1 :(得分:0)
对于 d3.json , d3.csv 和 d3.tsv 是异步请求函数,因此 console.log( )将在 d3.json()之前运行,其中&#34; gapminder&#34;仍然未定义。
在 console.log()之后,运行 d3.json()的术语并进行分配&#34; gapminder& #34;使用json数据,因此它不再是 undefined 。