我有一個文件data.json
其內容:{"id": "foo", "value": "bar"}
。我在同一個目錄中的另一個文件index.html
具有以下內容:從功能內的JavaScript存儲設置變量
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var datavar;
d3.json("data.json", function(d) { datavar = d; console.log(datavar); });
console.log(datavar);
</script>
當我在Web瀏覽器中打開index.html
,第一console.log(datavar)
調用輸出{id: "foo", value: "bar"}
。第二個輸出undefined
。我的印象是,自從我在函數外部初始化datavar
以來,我對它做出的更改將會在我們退出函數後持續。我怎樣才能在函數外部存儲數據?
.json可能是一個aysnc函數。參考[這個問題](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)或使用承諾來解決這個(很好) –
你可能會因爲你認爲第二個日誌在時間上是第一個:'console.log(Date.now(),「:」,datavar);'(d3函數被調用,但回調在d3觸發之前不會運行,它會立即退出主調用,並且您在console.log中輸入了一個當前尚未初始化的變量) –