d3.csv to metoda asynchroniczna. Oznacza to, że kod wewnątrz funkcji wywołania zwrotnego jest uruchamiany, gdy dane są ładowane, ale kod po i poza funkcja wywołania zwrotnego zostanie uruchomiona natychmiast po wysłaniu żądania, gdy dane nie są jeszcze dostępne. Innymi słowy:
first();
d3.csv("path/to/file.csv", function(rows) {
third();
});
second();
Jeśli chcesz korzystać z danych, który jest ładowany przez d3.csv, albo trzeba umieścić ten kod wewnątrz funkcji zwrotnej (gdzie third
jest powyżej):
d3.csv("path/to/file.csv", function(rows) {
doSomethingWithRows(rows);
});
function doSomethingWithRows(rows) {
// do something with rows
}
Albo, można go zapisać jako zmienną globalną w oknie, które można następnie odnosić się później:
var rows;
d3.csv("path/to/file.csv", function(loadedRows) {
rows = loadedRows;
doSomethingWithRows();
});
function doSomethingWithRows() {
// do something with rows
}
Jeśli chcesz, możesz również przypisać dane załadowane wprost do obiektu window, raczej niż deklarowanie zmiennej, a następnie kierowanie dwie różne nazwy:
d3.csv("path/to/file.csv", function(rows) {
window.rows = rows;
doSomethingWithRows();
});
function doSomethingWithRows() {
// do something with rows
}
czy mimo to można odczytać z MongoDB za pomocą d3.js? –
@SGaber Nie sądzę, że dobrym pomysłem jest przekazanie danych uwierzytelniających do użytkowników. – TranslucentCloud