Maison  >  Article  >  interface Web  >  Explication détaillée du mécanisme de fonctionnement JS

Explication détaillée du mécanisme de fonctionnement JS

小云云
小云云original
2018-03-17 16:04:081828parcourir

L'environnement dans lequel JS s'exécute est un navigateur. Le navigateur est multi-processus. Chaque page d'onglet ouvrira un processus supplémentaire. Le processus peut inclure le processus de contrôle principal (responsable de l'affichage du navigateur, de l'avant et de l'arrière de l'utilisateur. actions, etc.), GPU, noyau du navigateur (processus de rendu du navigateur, responsable du rendu des pages, de l'exécution du script, du traitement des événements), etc.

Parmi eux, le noyau du navigateur est multithread, y compris

  1. Fil de rendu GUI

  2. Moteur JS fil

  3. Fil de déclenchement d'événement JS

  4. Fil de déclenchement chronométré

  5. Fil de requête HTTP asynchrone

    Vous pouvez savoir que JS est monothread. La raison pour laquelle JS est monothread est que JS interagit principalement avec les utilisateurs et peut également faire fonctionner des éléments DOM. S'il est multithread, un thread peut modifier un élément DOM. . Lorsqu'un autre thread supprime cet élément DOM, le navigateur ne sait pas quel thread doit être utilisé

Un seul thread signifie une file d'attente de tâches, donc toutes les tâches sont exécutées sur un seul thread. la tâche précédente n'est pas terminée, les tâches suivantes doivent attendre, ce qui entraînera un blocage. Afin d'éviter cette situation, JS dispose d'un mécanisme de boucle d'événements pour y faire face.
Explication détaillée du mécanisme de fonctionnement JS
Les tâches synchrones seront exécutées directement sur le thread principal. Si vous devez effectuer une tâche asynchrone, par exemple si vous devez lancer une requête asynchrone AJAX, le thread principal l'indiquera à la requête HTTP asynchrone. thread pour permettre au thread de requête HTTP asynchrone d'effectuer cette tâche de requête asynchrone AJAX, lorsque le thread de requête HTTP termine la tâche, il placera le résultat de l'exécution dans la file d'attente des messages. Lorsque la tâche de synchronisation du thread principal est terminée, il lira la tâche asynchrone. dans la file d'attente des messages et exécutez la fonction de rappel asynchrone, ce processus est répété en continu.

Recommandations associées :

Événements et fonctions de rappel du mécanisme d'exécution 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