d3.csv là một phương thức không đồng bộ. Điều này có nghĩa là mã bên trong hàm gọi lại được chạy khi dữ liệu được tải, nhưng mã sau và bên ngoài chức năng gọi lại sẽ được chạy ngay sau khi yêu cầu được thực hiện, khi dữ liệu chưa có sẵn. Nói cách khác:
first();
d3.csv("path/to/file.csv", function(rows) {
third();
});
second();
Nếu bạn muốn sử dụng các dữ liệu được nạp bởi d3.csv, bạn có cần phải đặt mã mà bên trong hàm callback (nơi third
là ở trên):
d3.csv("path/to/file.csv", function(rows) {
doSomethingWithRows(rows);
});
function doSomethingWithRows(rows) {
// do something with rows
}
Hoặc, bạn có thể lưu nó như là một biến toàn cầu trên cửa sổ sau đó bạn có thể tham khảo sau:
var rows;
d3.csv("path/to/file.csv", function(loadedRows) {
rows = loadedRows;
doSomethingWithRows();
});
function doSomethingWithRows() {
// do something with rows
}
Nếu bạn muốn, bạn cũng có thể gán các dữ liệu được nạp một cách rõ ràng để các đối tượng cửa sổ, thay vì hơn khai báo một biến và sau đó quản lý hai tên gọi khác nhau:
d3.csv("path/to/file.csv", function(rows) {
window.rows = rows;
doSomethingWithRows();
});
function doSomethingWithRows() {
// do something with rows
}
là có anyway để đọc từ MongoDB sử dụng d3.js? –
@SGaber Tôi không nghĩ rằng bạn nên chuyển thông tin đăng nhập DB của mình cho người dùng. – TranslucentCloud