0
votes

ASYNC / SYNC: Comment puis-je être sûr qu'une fonction JavaScript s'exécutera après la boucle?

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);


2 commentaires

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?


3 Réponses :


2
votes

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.


0 commentaires

1
votes

pour la boucle bloquez des tâches, donc dans ce cas, votre console.log () sera toujours exécuté après la boucle. < / p>


2 commentaires

Et foreach ? Sont-ils également bloqués? Sont des boucles non bloquantes?


JavaScript est un environnement unique à filetage, seules les fonctions ASYNC sont ... bien async



1
votes

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?

oui. Il n'y a rien d'asynchrone.

Qu'en est-il de toutes les exécutions ASYNC / SYNC?

Vous n'avez pas de code ASYNC là-bas.

Comment réécrireais-je le code afin que la console.log exécute en même temps que le cycle?

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.


0 commentaires