alcance variable en d3 javascript
Quiero obtener datos en una variable global usando el siguiente código:
var data;
d3.json ( "file.json" , function(json) {
data = json;
console.log(data); //defined
});
console.log(data); //undefined
Pero el problema es que solo tengo la variable de datos definida en la función d3.json pero no está definida. ¿Cómo puedo solucionar este problema?
Gracias
Debido a que las solicitudes d3 (como d3.json
) son asíncronas, es una buena práctica incluir todo el código que depende de su solicitud externa dentro de la devolución de llamada de la solicitud, asegurándose de que este código tenga acceso a los datos antes de ejecutarse. De los documentos D3 : "Al cargar datos de forma asincrónica, el código que depende de los datos cargados generalmente debe existir dentro de la función de devolución de llamada".
Entonces, una opción es poner todo el código dentro de la función de devolución de llamada. Si desea separar el código en partes, también puede pasar la respuesta de su solicitud a una función separada, algo como esto:
function myFunc(data) {
console.log(data);
}
d3.json('file.json', function (data) {
var json = data;
myFunc(json);
});