alcance variable en d3 javascript

Resuelto I3i0 asked hace 11 años • 1 respuestas

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

I3i0 avatar Jun 25 '13 17:06 I3i0
Aceptado

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);
});
nsonnad avatar Jun 25 '2013 10:06 nsonnad