d3.csv是一个异步方法。这意味着回调函数内部的代码将在数据加载时运行,但是回调函数之后和外部的代码将在请求发出时立即运行,此时数据尚不可用。换句话说:
first();
d3.csv("path/to/file.csv", function(rows) {
third();
});
second();
如果你想使用由d3.csv加载的数据,你需要将那段代码放在回调函数内(在上面的third
处):
d3.csv("path/to/file.csv", function(rows) {
doSomethingWithRows(rows);
});
function doSomethingWithRows(rows) {
}
或者,您可以将它保存为窗口上的全局变量,稍后可以引用它:
var rows;
d3.csv("path/to/file.csv", function(loadedRows) {
rows = loadedRows;
doSomethingWithRows();
});
function doSomethingWithRows() {
}
如果你愿意的话,你也可以将加载的数据明确地分配给window对象,而不是声明一个变量,然后管理两个不同的名称:
d3.csv("path/to/file.csv", function(rows) {
window.rows = rows;
doSomethingWithRows();
});
function doSomethingWithRows() {
}