我在这里阅读了很多关于如何在变量中保存数据的帖子。为此,我创建了全局变量“arraydates”。它需要在一个数组中用于轴刻度值,它正常工作。但是只有ajax-request中的第一个console.log正在运行。第二个没有给出任何东西。任何线索为什么?是因为Ajaxrequest是异步的吗? 那么什么是更好的解决方案呢? 谢谢你的建议。
var arraydates;
d3.json("/weather/date.json", function(error, datad) {
var array = [];
for(var i in datad)
array.push( datad[i].date);
arraydates=array;
console.log(arraydates);
});
的console.log(arraydates);
答案 0 :(得分:1)
是的 - 这是影响控制台记录内容的ajax请求的异步性质。生活在({1}}处理程序函数之外(和之后)的代码将在启动ajax请求之后但在响应返回之前立即执行。上面列出的The link Lars涵盖了所有这些内容,但其含义是您需要一个全局变量,或者您想要在数据准备好后运行的任何代码都必须存在于d3.json
处理函数中。如果你正在寻找一个更简洁的图案,而不是依赖于全局变量,你可以这样设置:
d3.json
答案 1 :(得分:0)
这两个建议对我的情况都很有用,但我还要补充一点,我的代码中有几个ajax请求,有点想清理它而不是嵌套多个请求,但现在它工作正常。 谢谢!