Sto caricando un file CSV di un elenco di altri file CSV in javascript utilizzando D3.Come faccio a garantire che D3 finisca di caricare diversi CSV prima dell'esecuzione di javascript?
Quando si esegue il codice seguente, l'array employee è ancora vuoto dal momento in cui viene inserito nel codice. C'è un modo corretto per garantire che D3 completi il caricamento dei dati prima che il javascript continui?
var employees = [];
//Retrieve the file list of all the csvs in the data directory, then run a callback on them
function retrieveList(url,callback) {
d3.csv(url,function(data) {
callback(data);
})
}
//Parse a file list, and then update the employee array with the data within
function parseList(filenames){
filenames.forEach(function(d) {
d3.csv(d.filename,function(data) {
data.forEach(function(d) employees.push(d.name));
}
}
}
//Run this code
var filenamesUrl = "http://.../filenames.csv"
retrieveList(filenamesUrl, parseList);
console.log(employees); //This logs "[]"
Se mi carica la pagina in Chrome, quando entro in console e accedo dipendenti, abbastanza sicuro che restituisce l'array pieno di nomi. Come posso farlo al momento in cui eseguo console.log (dipendenti) sull'ultima riga?
Se vuoi vedere più chiaramente quello che sto cercando di fare, è qui: https: // github.com/mkwng/d3-experiments/ – mkwng