Todos nós sabemos que o navegador executa o código js em um único thread. Quando a etapa da página é executada, a página não pode responder a mais nada até que a etapa termine.
WebWorkers são códigos js executados em segundo plano, independentes de outros scripts e não afetarão o desempenho da página. Podemos continuar fazendo o que quisermos: clicar, selecionar conteúdo, etc., enquanto os WebWorkers são executados em segundo plano.
Os trabalhadores da Web são suportados por todos os principais navegadores, exceto o Internet Explorer.
O primeiro passo: gerar trabalhadores.Chame o construtor Worker() e especifique o URI de um script a ser executado no thread de trabalho. Por exemplo, a página atual especifica que o script executado pelo thread de trabalho é script-worker.js.
var meuTrabalhador = novo Trabalhador(script-worker.js);
Em script-worker.js podemos executar código adicional, e a execução desse código não afetará a página para fazer outras coisas que você deseja, o que parece ótimo.
Passo 2: Passe os dados.A página pode interagir com o trabalhador para transferir dados, para que o trabalhador possa calcular silenciosamente sem afetar a capacidade da página de fazer coisas significativas. Em seguida, diga à página para usar os dados.
//[código da página principal]myWorker.postMessage(data-from-mainpage);//[código do trabalhador]onmessage = function (oEvent) { console.log(Os dados enviados da página principal são: +oEvent.data)) ;
A situação acima é [a página principal envia dados para o script do trabalhador], sim, você viu o postMessage muito amigável, ok, gosto dessa coisa.
//[Código da página principal] myWorker.onmessage = function (oEvent) { console.log(Os dados enviados pelo script do trabalhador são: +oEvent.data) }); página principal);
A situação acima é [o script de trabalho envia dados para a página principal]. Ainda é muito simples, mas são apenas APIs.
Além disso, pode haver erros na execução do trabalhador e a página principal passa:
myWorker.onerror=function(oEvent){};
Você pode monitorar erros do trabalhador.
Etapa 3: Pontos importantes.O thread de trabalho pode executar tarefas sem interferir na IU. O código JavaScript executado está completamente em outro escopo e não compartilha o escopo com o código na página da web atual.
O método importScripts() é fornecido no escopo global do Worker, que recebe uma ou mais URLs apontando para arquivos JavaScript. O processo de carregamento é realizado de forma assíncrona.
importScripts() só terá efeito se você fornecer um URI absoluto e o processo de execução também for assíncrono.
Quando criamos o objeto WebWorkers, ele continuará escutando mensagens (mesmo após a conclusão do script externo) até que seja finalizado. Use o método myWorker.terminate() para encerrar os WebWorkers e liberar os recursos do navegador/computador.
Etapa 4: Limitações importantes.1. Incapaz de acessar nós DOM, variáveis globais ou funções globais, incapaz de chamar funções como alert() ou confirmar, e incapaz de acessar variáveis globais do navegador, como janela e documento;
2. No entanto, Javascript no Web Worker ainda pode usar funções como setTimeout() e setInterval(), e também pode usar o objeto XMLHttpRequest para comunicação Ajax.
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para o estudo de todos. Também espero que todos apoiem a Rede VeVb Wulin.