我对d3.js中的应用程序逻辑有疑问。我发送一个ajax请求(一些json数据)从客户端到服务器和服务器(nodejs)我保存到一个文件。然后我尝试通过以下命令获取json数据。d3.json()函数返回undefined
d3.json("nodes.json", function(error, json) {
if(error)
{
console.warn('nodes.json error', error);
//throw error;
}
console.log("d3.json");
savedNodesLinks = json;
});
console.log('parsed', JSON.parse(JSON.stringify(savedNodesLinks || null)));
if(JSON.parse(JSON.stringify(savedNodesLinks || null)) != null)
{
links = JSON.parse(JSON.stringify(savedNodesLinks || null)).links;
nodes = JSON.parse(JSON.stringify(savedNodesLinks || null)).nodes;
}
此函数它由上述代码段由一个按钮调用。当我第一次点击按钮时,'savedNodesLinks'变量显示为未定义的。当我第二次按下按钮时,数据以一种可靠的方式出现。我该如何解决这个问题?我调试的代码,但我无法找到问题提前
感谢,
d3.json()调用是异步的,这意味着它不会立即得到json。当json可用时,调用具有'console.log(“d3.json”)'的函数。在那一点上它是可用的。同时调用d3.json()之后的调用console.log()调用(在json可用之前),因此savedNodesLinks尚未定义。我建议阅读JavaScript中的异步调用以更好地理解这一点。 – rasmeister