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 HTML : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager