244 votes

Lorsque JavaScript est synchrone?

J'ai eu l'impression pour que JavaScript était toujours asynchrone. Cependant, j'ai appris qu'il existe des situations où il n'est pas (c'est à dire les manipulations DOM). Est-il une bonne référence, n'importe où quand il sera synchrone et quand il sera asynchrone? N'jQuery affecter à ce tout?

336voto

cletus Points 276888

Javascript est toujours synchrone et single-threaded de sens que si vous êtes l'exécution d'un script Javascript bloc de code sur une page, alors pas d'autre Javascript sur cette page actuellement être exécuté.

Javascript n'est pas asynchrone dans le sens qu'il peut faire, par exemple, les appels AJAX. Le code va s'arrêter jusqu'à ce que les retours d'appel (avec succès ou une erreur), à quel point la fonction de rappel sera exécuté de manière synchrone. Aucun autre code sera exécuté à ce point. Il ne sera pas interrompre tout autre code en cours d'exécution.

Ce même type de rappel fonctionne avec Javascript minuteries.

Décrivant Javascript asynchrone est peut-être trompeuse. L'Iti est plus juste de dire que le Javascript est synchrone et single-threaded avec divers mécanismes de rappel.

jQuery a une option sur les appels AJAX pour faire d'eux de façon synchrone (avec l' async: false option). C'est une erreur de débutant à être tentés d'utiliser ce qu'elle permet un plus traditionnel modèle de programmation que l'on pourrait être plus utilisé. La raison, c'est problématique, c'est que cela va bloquer tous les Javascript sur la page jusqu'à la fin, inclus tous les gestionnaires d'événements et les minuteries.

107voto

CMS Points 315406

JavaScript est mono-thread, et toutes les fois que vous travaillez sur un code synchrone-exécution du flux.

De bons exemples de ce comportement asynchrone que JavaScript peut avoir sont des événements (interaction avec l'utilisateur, les résultats d'une requête Ajax, etc) et les minuteries, essentiellement des actions que vous ne savez pas exactement quand ils pourrait se produire.

Je vous recommande de donner un coup d'oeil à l'article suivant:

Cet article va vous aider à comprendre le single-threaded nature de JavaScript et comment les minuteries de travail en interne et comment JavaScript asynchrone, l'exécution des travaux.

async

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X