我使用D3.js并在从csv文件加载数据时,删除alert()语句时页面不呈现。我不是js专家,我知道这与异步操作模式有关,但我不知道该改变什么。
警告时(非常感谢
安迪
man 7 signal
答案 0 :(得分:1)
当您调用仪表板时,似乎您的数据未完全加载。它适用于alert
,因为在警报打开时,您的脚本会暂停。另一件事是,你在这里使用全局变量。让我们使用回调来避免这种情况。
D3' csv
函数使用回调并在数据准备好后调用它。
d3.csv("/xxxxxxxx/templates/uber/js/theclimate.csv", function(climate_statistics) {
/* ... */
});
您现在可以在回调中调用仪表板功能,或者为您的功能添加回调。让我们在这里做后者:
var climate_csv = function( callback ) {
d3.csv(
"/xxxxxxxx/templates/uber/js/theclimate.csv",
function( climate_statistics ) {
var climate_data = climate_statistics.map(function( d ) {
month = d.month;
low = +d.low;
high = +d.high;
rainfall = +d.rainfall;
sunshine = +d.sunshine;
nighttime = +d.nighttime;
return {
"Month": month,
"cStats": {
"low": low,
"high": high
},
"rainfall": rainfall,
"sun": {
"Sunshine": sunshine,
"Nighttime": nighttime
}
};
});
// we are done with mapping our data
// let's call the callback with the data
callback(climate_data);
});
};
/* ... */
climate_csv(function( climate_data ) {
dashboard('#dashboard', climate_data, climateStats2, climateStats3,
climateStats4, climateStats5);
});
答案 1 :(得分:0)
在成功回调中移除警报时放置无效的功能,这将成为诀窍。 .csv工作异步,因此当您发出警报时,请求在后台完成,当您删除它时没有等待时间"添加(应该是)以及它为什么不起作用。
不使用d3.js,但此文档可以提供帮助: https://github.com/mbostock/d3/wiki/CSV
d3.csv("path/to/file.csv")
.row(function(d) { return {key: d.key, value: +d.value}; })
.get(function(error, rows) { console.log(rows); });
希望它有所帮助。