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) {
// do something with rows
}
Или, вы можете сохранить его в качестве глобальной переменной в окне, которое можно затем сослаться на позже:
var rows;
d3.csv("path/to/file.csv", function(loadedRows) {
rows = loadedRows;
doSomethingWithRows();
});
function doSomethingWithRows() {
// do something with rows
}
Если вы хотите, вы также можете назначить загруженные данные в явном виде на объект окна, а чем объявлять переменную, а затем управлять двумя различными именами:
d3.csv("path/to/file.csv", function(rows) {
window.rows = rows;
doSomethingWithRows();
});
function doSomethingWithRows() {
// do something with rows
}
есть в любом случае, чтобы читать из MongoDB с помощью d3.js? –
@SGaber Я не думаю, что это хорошая идея передать ваши учетные данные для пользователей. – TranslucentCloud