FileReader() attendre la fin de chargement d'un fichier text
Bonjour,
Dans le code ci-dessous, il y a deux fonctions : main() et file_uploaded().
Après que l'utilisateur ait choisi le ou les fichiers à charger, la fonction main() va lancer la fonction file_uploaded() pour que les données des fichiers text se retrouvent au bon format dans le tableau "tableau_data".
Ensuite, elle lance d'autres fonctions qui vont travailler à partir des données qui sont dans tableau_data.
Cependant, les données n'ont pas le temps d'être chargées dans tableau_data que les fonctions function a() et function b() sont déjà lancées. Donc forcément, il y a des erreurs qui apparaissent.
Je cherche donc un moyen d'attendre la fin du chargement du fichier text avant que les autres fonctions soient lancées.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <html>
<head>
<title>Lire fichier</title>
</head>
<body>
<form>
<input id="dataFile" type="file" accept=".txt" multiple/></input>
</form>
<script>
//Déclaration des variables
let tableau_data = [];
let datafile;
let n = 1;
let input = document.querySelector('input');
// let preview = document.querySelector('.preview');
input.addEventListener('change', main);
function file_uploaded(datafile){
//Cette fonction permetTant de charger un fichier
let reader = new FileReader();
reader.onload = function(event) {
let records = reader.result.split("\r\n");
//mise en forme du tableau de données
mise_en_forme_donnees(records,";");
records.forEach(function(element) {
tableau_data.push(element.split("="));
});
};
reader.readAsText(datafile);
}
function main() {
// fonction principale
n = document.getElementById("dataFile").files.length; // récupère le nombre de document à charger
for (var i = 0; i < n; i ++){
datafile = document.getElementById("dataFile").files[i];
file_uploaded(datafile); // lance la fonction de chargement du fichier.
function a(tableau_data);
function b(tableau_data);
}
}
</script>
</body>
</html> |
Je vous remercie par avance pour votre aide.
Yu Cloud