Maison  >  Article  >  interface Web  >  Thread JavaScript exécuté en arrière-plan – Web Worker

Thread JavaScript exécuté en arrière-plan – Web Worker

零下一度
零下一度original
2017-06-25 09:28:341422parcourir

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

  • Web Worker ne peut pas accéder aux variables globales du navigateur telles que window et document ;

Cependant, Javascript dans Web Worker peut toujours utiliser les fonctions setTimeout() et setInterval(). utilisez également les objets XMLHttpRequest pour la communication Ajax.

Les Web Workers sont actuellement pris en charge par tous les principaux navigateurs, à l'exception d'Internet Explorer.

Les amis qui connaissent Angular devraient savoir qu'Angular1 est le plus critiqué pour son mécanisme de vérification sale. Lorsque la portée contient trop de données, cela affectera sérieusement les performances. Angular2 utilise WebWorker pour déplacer les travaux de calcul lourds vers le thread auxiliaire afin que le thread d'interface ne soit pas affecté.

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