Sobes.tech
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 window e document.
  • 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!');
});