Код работает в консоли, но не при загрузке сайта
Мой код работает в консоли, но не при загрузке сайта.
function getData() {
var a = [];
d3.csv("../csv/master.csv").get(function (error, rows) {
for (var i = 0; i < rows.length; i++) {
a.push(rows[i]);
}
});
return a;
}
a = getData();
alert(a[0].agency);
Как ни странно, переменная a, кажется, загружается веб-сайтом, как я могу вызвать его в консоли, но предупреждение выдает ошибку.
("Uncaught TypeError: Cannot read property 'agency' of undefined")
Когда я вызываю точно такое же предупреждение в консоли, оно работает отлично.
Есть идеи?
Спасибо,
Jonas
1 ответ
d3.csv
Метод выдает асинхронный запрос, поэтому возможно, что в версии веб-сайта файл csv еще не был полностью загружен при попытке доступа к данным. Вы, вероятно, должны реорганизовать свой код и поместить логику, которая зависит от данных, в функцию обратного вызова. Вы также можете вызвать событие, когда загрузка данных будет завершена, и заставить другой объект прослушивать это событие, чтобы начать рисование.
d3.csv('../csv/master.csv', function(error, rows) {
// The data is available here
alert(rows[0].agency);
});
Больше информации о d3.csv
в документах.
РЕДАКТИРОВАТЬ: Как @elclanrs указал, предыдущий код не смог объяснить, что опубликованный код должен быть реорганизован, поэтому я обновил ответ.