我對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