Maison  >  Article  >  interface Web  >  Parlez brièvement de la synchronisation et de l'asynchronisme des compétences JavaScript_javascript

Parlez brièvement de la synchronisation et de l'asynchronisme des compétences JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 15:22:361153parcourir

1. Dessinez une image à la main pour illustrer.

2. Pourquoi JavaScript est monothread (voici une citation du professeur Ruan Yifeng)

Le fil de discussion unique de JavaScript est lié à son objectif.

En tant que langage de script de navigateur, l'objectif principal de JavaScript est d'interagir avec les utilisateurs et de manipuler le DOM.

Cela détermine qu'il ne peut être qu'un seul thread, sinon cela entraînera des problèmes de synchronisation très complexes.

Par exemple, supposons que JavaScript ait deux threads en même temps. Un thread ajoute du contenu à un certain nœud DOM et l'autre thread supprime le nœud. Dans ce cas, quel thread le navigateur doit-il utiliser ?

Ainsi, afin d'éviter toute complexité, JavaScript est monothread depuis sa naissance. Cela est devenu la fonctionnalité principale de ce langage et ne changera pas à l'avenir.

Afin de profiter de la puissance de calcul des CPU multicœurs, HTML5 propose le standard Web Worker, qui permet aux scripts JavaScript de créer plusieurs threads, mais les threads enfants sont entièrement contrôlés par le thread principal et ne doivent pas faire fonctionner le DOMAINE.

Ainsi, cette nouvelle norme ne change pas la nature monothread de JavaScript.

Portail : Explication détaillée de la boucle d'événements (Event Loop) du mécanisme de fonctionnement JavaScript

3. Où est l'implémentation asynchrone de JavaScript

Comme le montre l'image du début, je pense personnellement que le thread principal de gauche est synchrone et que la file d'attente des événements (file d'attente des messages) de gauche est asynchrone.

Bien sûr, il existe de nombreux asyncs en JavaScript :

Ajax(XMLHttpRequest)
Image Tag,Script Tag,iframe(原理类似)
setTimeout/setInterval
CSS3 Transition/Animation
postMessage
Web Workers
Web Sockets
and more…

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn