Je cherche à défiger ma page.
Je veux réaliser de long calculs et je veux pouvoir afficher la progression. Pour cela j'ai utilisé setTimeout qui me permet de voir le texte d'information renseigné par le code en cours d'exécution.
par exemple :
Cela n'affiche rien tant que les calculs ne sont pas terminés et affiche directement "Calcul terminés" à la fin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 txtLoadingInfo.innerHTML= "Calcul 1"; calcul1(); txtLoadingInfo.innerHTML= "Calcul 2"; calcul2(); txtLoadingInfo.innerHTML= "Calcul 3"; calcul3(); txtLoadingInfo.innerHTML= "Calcul 4"; calcul4(); txtLoadingInfo.innerHTML= "Calcul 5"; calcul5(); txtLoadingInfo.innerHTML= "Calcul terminés"
J'ai donc utilisé le code suivant :
Résultat: ca fonctionne mais le code n'est pas beau, de plus l'image dont src est renseignée par "PhotoLoading.png" n'apparaît que après le 2ème calcul sauf si je met le premier setTimeout à 100 ms.
Code : 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 imgage.src = "PhotoLoading.png"; setTimeout(init,0); function init(){ txtLoadingInfo.innerHTML= "Calcul 1";setTimeout(()=>{ calcul1(); txtLoadingInfo.innerHTML= "Calcul 2";setTimeout(()=>{ calcul2(); txtLoadingInfo.innerHTML= "Calcul 3";setTimeout(()=>{ calcul3(); txtLoadingInfo.innerHTML= "Calcul 4";setTimeout(()=>{ calcul4(); txtLoadingInfo.innerHTML= "Calcul 5";setTimeout(()=>{ calcul5(); txtLoadingInfo.innerHTML= "Calcul terminés" },0);},0);},0);},0);},0);},0); }
Est-il possible de faire plus élégant en utilisant Async Await ?
J'ai un peu testé et je n'ai pas réussi.







Répondre avec citation
Partager