D3.csv est une méthode asynchrone. Cela signifie que le code à l'intérieur de la fonction de rappel est exécuté lorsque les données sont chargées, mais le code après et en dehors de la fonction de rappel sera exécuté immédiatement après la requête, lorsque les données ne sont pas encore disponibles. En d'autres termes :
first();
d3.csv("chemin/vers/fichier.csv", function(rows) {
third();
});
second();
Si vous souhaitez utiliser les données chargées par d3.csv, vous devez soit mettre ce code à l'intérieur de la fonction de rappel (où se trouve third
, ci-dessus) :
d3.csv("chemin/vers/fichier.csv", function(rows) {
faireQuelqueChoseAvecLesLignes(rows);
});
function faireQuelqueChoseAvecLesLignes(rows) {
// faire quelque chose avec les lignes
}
Ou vous pouvez les enregistrer en tant que variable globale sur la fenêtre à laquelle vous pourrez ensuite vous référer ultérieurement :
var lignes;
d3.csv("chemin/vers/fichier.csv", function(lignesChargées) {
rows = lignesChargées;
faireQuelqueChoseAvecLesLignes();
});
function faireQuelqueChoseAvecLesLignes() {
// faire quelque chose avec les lignes
}
Si vous le souhaitez, vous pouvez également assigner explicitement les données chargées à l'objet window, plutôt que de déclarer une variable et de gérer deux noms différents :
d3.csv("chemin/vers/fichier.csv", function(rows) {
window.rows = rows;
faireQuelqueChoseAvecLesLignes();
});
function faireQuelqueChoseAvecLesLignes() {
// faire quelque chose avec les lignes
}