scope variabile in d3 javascript

Voglio ottenere i dati nella variabile globale usando il seguente codice:

var data; d3.json ( "file.json" , function(json) { data = json; console.log(data); //defined }); console.log(data); //undefined 

Ma il problema è che ho semplicemente una variabile di dati definita nella funzione d3.json ma fuori è undefined. come posso risolvere questo problema?

Grazie

Poiché le richieste d3 (come d3.json ) sono asincrone, è consigliabile avvolgere tutto il codice dipendente dalla richiesta esterna all’interno del callback della richiesta, assicurandosi che questo codice abbia accesso ai dati prima dell’esecuzione. Dalla documentazione di D3 : “Quando si caricano i dati in modo asincrono, il codice che dipende dai dati caricati dovrebbe generalmente esistere all’interno della funzione di callback.”

Quindi un’opzione è quella di inserire tutto il codice all’interno della funzione di callback. Se desideri separare il codice in parti, puoi anche passare la risposta dalla tua richiesta a una funzione separata, qualcosa del genere:

 function myFunc(data) { console.log(data); } d3.json('file.json', function (data) { var json = data; myFunc(json); }