Maison  >  Article  >  interface Web  >  Le moteur javascript est-il monothread ?

Le moteur javascript est-il monothread ?

WBOY
WBOYoriginal
2022-03-03 10:35:371619parcourir

Le moteur JavaScript est monothread ; l'objectif principal de JavaScript est d'interagir avec les utilisateurs et de faire fonctionner le DOM, par exemple, pour éviter des problèmes de synchronisation complexes afin qu'il ne puisse faire qu'une seule chose à la fois, donc JavaScript est unique -fileté.

Le moteur javascript est-il monothread ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.

Le moteur JavaScript est-il monothread ?

Le moteur JavaScript est monothread.

Pourquoi JS est-il monothread ? Pourquoi a-t-il besoin d'asynchrone ? Comment le monothread réalise-t-il l'asynchrone ?

L'émergence de la technologie est étroitement liée aux scénarios d'application dans le monde réel.

De même, nous répondrons aux questions en fonction de scénarios réels

(1) Pourquoi JS est-il monothread ?

Monothread : ne peut faire qu'une seule chose à la fois

JavaScript est monothread , et 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 ?

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 DOM. . Par conséquent, cette nouvelle norme ne modifie pas la nature monothread de JavaScript.

JS a été conçu à l'origine pour être utilisé dans les navigateurs, alors imaginez si JS dans le navigateur était multithread.

Description du scénario :

Alors maintenant, il y a 2 processus, process1 et process2 Puisqu'il s'agit d'un JS multi-processus, ils opèrent sur le même dom en même temps

process1 a supprimé le dom et process2 a modifié le dom. en même temps Comment le navigateur doit-il exécuter deux commandes contradictoires ?

Si vous y réfléchissez de cette façon, il devrait être facile de comprendre pourquoi JS est conçu pour être monothread.

(2) Pourquoi JS a-t-il besoin d'asynchrone ?

Description de la scène :

S'il n'y a pas d'asynchrone dans JS, elle ne peut être exécutée que de haut en bas. alors le code suivant sera bloqué.

Pour les utilisateurs, bloquer signifie "bloqué", ce qui conduit à une mauvaise expérience utilisateur

Il existe donc une exécution asynchrone dans JS.

Recommandations associées : Tutoriel d'apprentissage Javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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