Tutorial de JS

JS HOME Introdução JS JS Para onde Saída JS Declarações JS Sintaxe JS Comentários JS Variáveis ​​JS JS Let JS Const Operadores JS JS Aritmética Atribuição de JS Tipos de dados JS Funções JS Objetos JS Eventos JS Strings JS Métodos de string JS Pesquisa de String JS Modelos de String JS Números JS Métodos de número JS Matrizes JS Métodos de matriz JS Classificação de matriz JS Iteração de matriz JS Const da matriz JS Datas JS Formatos de data JS Métodos de obtenção de data JS Métodos de conjunto de datas JS JS Math JS Aleatório JS Booleanos Comparações JS Condições JS Interruptor JS Circuito JS para JS Loop Para Entrada JS Loop Para De JS Loop Enquanto Quebra de JS Iteráveis ​​JS Conjuntos JS Mapas JS Tipo JS de Conversão de tipo JS JS bit a bit JS RegExp Erros JS Escopo JS Içamento JS Modo estrito JS JS esta palavra-chave Função de seta JS Classes JS JS JSON Depuração JS Guia de estilo JS Práticas recomendadas de JS Erros de JS Desempenho JS Palavras reservadas JS

Versões JS

Versões JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Histórico de JS

Objetos JS

Definições de objeto Propriedades do objeto Métodos de objeto Exibição de objetos Acessadores de objetos Construtores de objetos Protótipos de Objetos Iteráveis ​​de objeto Conjuntos de objetos Mapas de objetos Referência do objeto

Funções JS

Definições de função Parâmetros de função Invocação de função Chamada de Função Função Aplicar Fechamentos de Função

Classes JS

Introdução à aula Herança de classe Classe Estática

JS Assíncrono

Retornos de chamada JS JS Assíncrono Promessas JS JS Async/Aguardar

JS HTML DOM

Introdução ao DOM Métodos DOM Documento DOM Elementos DOM HTML DOM Formulários DOM CSS DOM Animações DOM Eventos DOM Ouvinte de eventos DOM Navegação DOM Nós DOM Coleções DOM Listas de nós DOM

BOM do navegador JS

Janela JS Tela JS Localização JS Histórico de JS Navegador JS Alerta pop-up JS Temporização JS Cookies JS

APIs da Web JS

Introdução à API da Web API de formulários da Web API de histórico da web API de armazenamento da Web API do trabalhador da Web API de busca da Web API de geolocalização da Web

JS AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

JS JSON

Introdução JSON Sintaxe JSON JSON x XML Tipos de dados JSON Análise JSON JSON Stringify Objetos JSON Matrizes JSON Servidor JSON JSON PHP HTML JSON JSON JSONP

JS x jQuery

Seletores jQuery HTML jQuery jQuery CSS jQuery DOM

Gráficos JS

Gráficos JS Tela JS JS Plotly JS Chart.js JS Google Chart JS D3.js

Exemplos JS

Exemplos JS JS HTML DOM Entrada HTML JS Objetos HTML JS Eventos HTML JS Navegador JS Editor JS Exercícios JS Teste JS Certificado JS

Referências JS

Objetos JavaScript Objetos HTML DOM


API de Trabalhadores da Web


Um web worker é um JavaScript executado em segundo plano, sem afetar o desempenho da página.


O que é um Web Worker?

Ao executar scripts em uma página HTML, a página não responde até que o script seja concluído.

Um web worker é um JavaScript executado em segundo plano, independentemente de outros scripts, sem afetar o desempenho da página. Você pode continuar fazendo o que quiser: clicar, selecionar coisas, etc., enquanto o web worker é executado em segundo plano.

Suporte ao navegador

Os números na tabela especificam as primeiras versões de navegador que suportam totalmente Web Workers:

Chrome 4 IE 10 Firefox 3.5 Safari 4 Opera 11.5
Jan 2010 Sep 2012 Jun 2009 Jun 2009 Jun 2011

Exemplo de Trabalhadores da Web

O exemplo abaixo cria um web worker simples que conta números em segundo plano:

Exemplo

Count numbers:


Verifique o suporte ao trabalhador da Web

Antes de criar um web worker, verifique se o navegador do usuário o suporta:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


Criar um arquivo de trabalhador da Web

Agora, vamos criar nosso web worker em um JavaScript externo.

Aqui, criamos um script que conta. O script é armazenado no arquivo "demo_workers.js":

let i = 0;

function timedCount() {
  i ++;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

A parte importante do código acima é o postMessage()método - que é usado para postar uma mensagem de volta na página HTML.

Nota: Normalmente, os web workers não são usados ​​para scripts tão simples, mas para tarefas mais intensivas da CPU.


Criar um objeto Web Worker

Agora que temos o arquivo do web worker, precisamos chamá-lo de uma página HTML.

As linhas a seguir verificam se o trabalhador já existe, caso contrário - ele cria um novo objeto de trabalhador da web e executa o código em "demo_workers.js":

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

Então podemos enviar e receber mensagens do web worker.

Adicione um ouvinte de evento "onmessage" ao web worker.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

Quando o web worker publica uma mensagem, o código dentro do ouvinte de eventos é executado. Os dados do web worker são armazenados em event.data.


Encerrar um Web Worker

Quando um objeto de trabalho da Web é criado, ele continuará a ouvir mensagens (mesmo após a conclusão do script externo) até que seja encerrado.

Para encerrar um web worker e liberar recursos de navegador/computador, use o terminate()método:

w.terminate();

Reutilize o Web Worker

Se você definir a variável do trabalhador como indefinida, depois que ela for encerrada, poderá reutilizar o código:

w = undefined;

Código de exemplo de trabalhador da Web completo

Já vimos o código do Worker no arquivo .js. Abaixo está o código para a página HTML:

Exemplo

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
let w;

function startWorker() {
  if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
  }
  w.onmessage = function(event) {
    document.getElementById("result").innerHTML = event.data;
  };
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

Trabalhadores da Web e o DOM

Como os web workers estão em arquivos externos, eles não têm acesso aos seguintes objetos JavaScript:

  • O objeto janela
  • O objeto do documento
  • O objeto pai