Ответ 1
Поскольку запросы d3 (например, d3.json
) являются асинхронными, рекомендуется обернуть весь код, зависящий от вашего внешнего запроса, в обратный вызов запроса, гарантируя, что этот код имеет доступ к данным перед выполнением. Из документов D3: "При асинхронной загрузке данных код, который зависит от загруженных данных, обычно должен существовать в функции обратного вызова".
Таким образом, один вариант - поместить весь ваш код в функцию обратного вызова. Если вы хотите разделить код на части, вы также можете передать ответ на ваш запрос в отдельную функцию, например, так:
function myFunc(data) {
console.log(data);
}
d3.json('file.json', function (data) {
var json = data;
myFunc(json);
});