Maison >interface Web >Tutoriel H5 >Comment utiliser l'API HTML5 Web Workers pour le traitement des antécédents?
L'API HTML5 Web Workers vous permet d'exécuter du code JavaScript en arrière-plan, séparé du thread de navigateur principal. Cela empêche le blocage de l'interface utilisateur (UI) tout en effectuant des tâches à long terme. Voici comment l'utiliser:
Création d'un travailleur: Vous commencez par créer un nouveau travailleur à l'aide d'une URL de script. Ce script contiendra le code que vous souhaitez exécuter en arrière-plan. Cela se fait dans votre fichier JavaScript principal:
<code class="javascript">const worker = new Worker('worker.js');</code>
Cela crée un objet Worker
, qui représente le thread d'arrière-plan. Remplacez 'worker.js'
par le chemin réel vers votre script de travail.
Le script Worker ( worker.js
): Ce script contient le code à exécuter en arrière-plan. Il est important de noter que ce script a sa propre portée globale, distincte du fil principal. Il ne peut pas accéder directement aux variables DOM ou globales du thread principal. Voici un exemple simple:
<code class="javascript">self.onmessage = function(e) { let result = e.data * 2; self.postMessage(result); };</code>
Ce script de travailleur écoute les messages ( onmessage
) à partir du thread principal. Il reçoit les données dans la propriété e.data
, effectue un calcul et renvoie le résultat au thread principal à l'aide postMessage
. self
-référence à la portée mondiale du travailleur.
Communication (thread principal): Le thread principal peut envoyer des messages au travailleur à l'aide de postMessage()
:
<code class="javascript">worker.postMessage(10); // Send the number 10 to the worker</code>
Recevoir des messages (thread principal): Le thread principal écoute les messages du travailleur à l'aide de l'écouteur d'événements onmessage
:
<code class="javascript">worker.onmessage = function(e) { console.log('Result:', e.data); // Log the result received from the worker };</code>
Terminer le travailleur: Lorsque vous avez terminé avec le travailleur, vous devez le mettre fin pour libérer les ressources:
<code class="javascript">worker.terminate();</code>
L'exécution traditionnelle JavaScript s'exécute sur le thread principal, ce qui signifie que toute tâche de longue durée (par exemple, calculs complexes, traitement de fichiers, demandes de fichiers) bloquera l'interface utilisateur, ce qui rend la page Web non réactive et frustrante pour l'utilisateur. Les travailleurs du Web offrent plusieurs avantages clés:
Non, les travailleurs du Web ne peuvent pas accéder directement au DOM. Il s'agit d'une caractéristique de sécurité cruciale qui empêche les conflits potentiels et assure la stabilité. Cependant, les données peuvent être échangées entre le thread principal et un travailleur en utilisant la méthode postMessage()
, comme démontré dans la première section.
La méthode postMessage()
vous permet d'envoyer des données structurées (par exemple, nombres, chaînes, tableaux, objets) entre le thread principal et le travailleur. Le thread principal et le travailleur doivent écouter l'événement message
pour recevoir et gérer les données. N'oubliez pas que seules les données clonables structurées peuvent être transmises - cela signifie que les données sont copiées, non partagées par référence. Pour transférer efficacement de grands ensembles de données, envisagez d'utiliser des objets transférables.
Alors que les travailleurs du Web offrent des avantages importants, plusieurs pièges doivent être évités:
error
et message
sur le thread principal est crucial pour gérer les cycles de vie des travailleurs et éviter les fuites.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!