Par exemple, j'ai ce code:
p>
var smth = ''; for (var i = 0; i < 10; i++) { // Some long function I call from elsewhere for (var k = 0; k < 10000; k++) { smth += k + ' '; } smth += i; } console.log(smth);
3 Réponses :
JavaScript exécute le code synchroneusement, c'est-à-dire une ligne à la fois. Ce qui signifie que la déclaration de console.log sera exécutée après la fin des boucles d'exécution. P>
pour la boucle code> bloquez des tâches, donc dans ce cas, votre
console.log () code> sera toujours exécuté après forte> la boucle. < / p>
Et foreach code>? Sont-ils également bloqués? Sont des boucles non bloquantes?
JavaScript est un environnement unique à filetage, seules les fonctions ASYNC sont ... bien async i>
Puis-je être sûr que la console.log sera toujours exécutée après que les cycles soient finis de traiter mon paramètre SMTH? P> blockQuote>
oui. Il n'y a rien d'asynchrone. p>
Qu'en est-il de toutes les exécutions ASYNC / SYNC? P> blockQuote>
Vous n'avez pas de code ASYNC là-bas. P>
Comment réécrireais-je le code afin que la console.log exécute en même temps que le cycle? p> blockQuote>
Vous auriez besoin de rendre le code non bloquant. Il n'y a rien dans Core JavaScript pour cela. Certains environnements hôtes offrent une forme de filetage via des travailleurs. P>
- WEBERFERRER pour navigateur. li>
- threads de travailleur pour nœud.js. li> ul>
Cela pourrait aider développeurs.google.com/web/fundamentals/primers/async-functio Ns
Pourriez-vous donner plus de détails sur ce que cette "fonction longue" fait?