Pour faire simple, Web Worker est un thread JavaScript exécuté en arrière-plan et n'affectera pas la réponse de la page.
Nous savons que JavaScript est un langage de script monothread, c'est-à-dire qu'il ne peut faire qu'une seule chose à la fois, sinon cela entraînera des problèmes de synchronisation extrêmement complexes. Par exemple, JavaScript a deux threads en même temps. Un thread est responsable de l'ajout de contenu à un certain nœud DOM et l'autre thread supprime le nœud. À ce stade, quel thread le navigateur doit-il utiliser comme thread principal ?
Ainsi, afin d'éviter le problème de complexité de synchronisation, JavaScript est monothread depuis sa naissance, ce qui est aussi une caractéristique de ce langage.
Le mécanisme à thread unique de JavaScript posera un problème. Lorsqu'il y a des tâches très complexes qui doivent être traitées, la page doit attendre que la tâche soit terminée avant de pouvoir répondre à l'opération de l'utilisateur. . Cela a un impact négatif sur la réponse de la page et sur l'expérience utilisateur. Afin de résoudre ce problème et de tirer parti de la puissance de calcul des processeurs multicœurs, HTML5 a proposé le standard Web Worker, qui autorise JavaScript. pour créer plusieurs threads, mais ces threads nouvellement créés seront utilisés comme threads enfants et sont entièrement soumis au contrôle du thread principal. Et il n'est pas autorisé à faire fonctionner le DOM. En fait, il est toujours de nature monothread. Par conséquent, nous pouvons confier certaines tâches fastidieuses au thread enfant créé par Web Worker pour qu'il les accomplisse en arrière-plan, tandis que la page de premier plan peut toujours traiter la réponse de l'utilisateur.
Étant donné que le fil de discussion créé par Web Worker est un sous-thread restreint, il y aura certaines restrictions d'utilisation :
Web Worker ne peut pas accéder aux nœuds DOM ;
Web Worker ne peut pas accéder aux variables globales ou aux fonctions globales
Web Worker ne peut pas appeler des fonctions telles que alert() ou confirmer
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!