Middle
O que são Web Workers e para que servem?
sobes.tech IA
Resposta da IA
Os Web Workers permitem executar operações intensivas em recursos em threads de fundo, sem bloquear o thread principal de execução do JavaScript, que é responsável por renderizar a interface do utilizador. Isto previne que a página congele e melhora a capacidade de resposta da aplicação, especialmente ao trabalhar com grandes volumes de dados, cálculos ou pedidos de rede.
Principais tipos de Worker:
- Worker dedicado: Criado com
new Worker('worker.js'). Funciona apenas com a página que o criou e é gerido diretamente a partir do script dessa página. - Shared Worker: Criado com
new SharedWorker('worker.js'). Pode ser acessível a partir de vários scripts em diferentes janelas ou abas da mesma origem. - Service Worker: Funciona como um proxy entre o navegador e a rede. Usado para cache de recursos, funcionamento autónomo e implementação de notificações push.
A comunicação entre o thread principal e o Worker é feita de forma assíncrona através de mensagens:
postMessage(): para enviar dados de um thread para outro.- Manejador de evento
onmessage: para receber dados noutro thread.
Restrições dos Web Workers:
- Não têm acesso direto ao DOM.
- Não têm acesso aos objetos
windowedocument. - Não têm acesso a algumas variáveis e funções globais do thread principal.
Exemplo de uso de Worker dedicado:
// main.js
const worker = new Worker('worker.js');
worker.addEventListener('message', (event) => {
console.log('Mensagem recebida do Worker:', event.data);
});
worker.postMessage('Olá do thread principal!');
// worker.js
self.addEventListener('message', (event) => {
console.log('Mensagem recebida do thread principal:', event.data);
self.postMessage('Olá do Worker!');
});