Les web workers vous permettent d'exécuter des calculs gourmands en CPU dans un thread d'arrière-plan, ce qui libère le thread principal pour mettre à jour l'interface utilisateur. Les applications qui effectuent beaucoup de calculs, comme la génération de dessins de conception assistée par ordinateur (CAO) ou des calculs géométriques lourds, peuvent utiliser des web workers pour améliorer leurs performances.
Utile : L'Angular CLI ne peut pas elle-même s'exécuter dans un web worker.
Ajouter un web worker
Pour ajouter un web worker à un projet existant, utilisez la commande ng generate de l'Angular CLI.
ng generate web-worker <location>
Vous pouvez ajouter un web worker n'importe où dans votre application.
Par exemple, pour ajouter un web worker au composant racine, src/app/app.ts, exécutez la commande suivante.
ng generate web-worker app
La commande effectue les actions suivantes.
Elle configure votre projet pour utiliser les web workers, si ce n'est pas déjà le cas.
Elle ajoute le code de base suivant à
src/app/app.worker.tspour recevoir des messages.src/app/app.worker.ts
addEventListener('message', ({data}) => { const response = `worker response to ${data}`; postMessage(response); });Elle ajoute le code de base suivant à
src/app/app.tspour utiliser le worker.src/app/app.ts
if (typeof Worker !== 'undefined') { // Create a new const worker = new Worker(new URL('./app.worker', import.meta.url)); worker.onmessage = ({data}) => { console.log(`page got message: ${data}`); }; worker.postMessage('hello'); } else { // Web workers are not supported in this environment. // You should add a fallback so that your program still executes correctly. }
Après avoir créé ce code de base initial, vous devez refactoriser votre code pour utiliser le web worker en envoyant des messages vers et depuis le worker.
Important : Certains environnements ou plateformes, comme @angular/platform-server utilisé pour le rendu côté serveur, ne prennent pas en charge les web workers.
Pour garantir que votre application fonctionne dans ces environnements, vous devez fournir un mécanisme de repli qui effectue les calculs que le worker effectuerait autrement.