Dans mon exemple ci-dessous, pourquoi connecte-t-il 512, plutôt que 1? Je comprends que JavaScript est synchrone, de sorte que la journalisation ne se produise pas longtemps avant la fin de la boucle? Pour cette raison, je m'attendais à un résultat = 1 lorsque connecté.
3 Réponses :
Selon cette définition, votre Si vous souhaitez que votre code exécuter synchrone code>: signifie qu'une seule opération peut être en cours à la fois. P>
console.log () code> ne sera exécuté que lorsque votre boucle a fini d'exécuter. p>
console.log () code> Tout en exécutant votre boucle, vous voulez dire que votre code est asynchrone. P>
Le problème ici est quand vous connectez-vous.
Lorsque vous enregistrez le contenu de "Résultat", la boucle FOR est terminée et la valeur de la variable "résultat" a été mise à jour chaque itérature de la boucle. p>
Ce qui suit pourrait illustrer ce p> vous donnera le résultat suivant: p>
Synchronisation JavaScript SYNCHRONISANTE C'est la moyenne est un travail de fil afin que cette opération soit itérative Vous pouvez voir ce lien pour plus d'informations p>
considération :) p>
S'il vous plaît, ne vous connectez pas simplement à une autre réponse.
Je ne sais pas si c'est une faute de frappe, mais re: "Je comprends JavaScript est synchrone": il est i> synchrone, sauf si vous faites quelque chose d'asynchronisation. Ce code est synchrone, le code après la boucle ne s'exécutera pas tant que la boucle n'était terminée. Tout devrait être un rappel autrement.
Pour la plupart, la plupart des expressions JavaScript sont séquentielles (synchrones), y compris des boucles. Il existe certaines méthodes asynchrones, telles que
SetTimeout code>,
seinterval code> et
xmlhttprequest code> qui sont également initiés séquentiellement, mais attendent de manière asynchrone pour un retour ou un rappel.
Pourquoi vous attendriez-vous ça? La boucle est exécutée avant le journal.