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