Galeria de mapas mentais Trabalhador da Web
Compreendendo e usando web workers. Web Workers são um conjunto de APIs fornecidas e padronizadas pelo HTML5. Ele cria um ambiente de execução multithread para JavaScript.
Editado em 2024-03-08 16:53:42Il s'agit d'une carte mentale sur les anévrismes intracrâniens, avec le contenu principal, notamment: le congé, l'évaluation d'admission, les mesures infirmières, les mesures de traitement, les examens auxiliaires, les manifestations cliniques et les définitions.
Il s'agit d'une carte mentale sur l'entretien de comptabilité des coûts, le principal contenu comprend: 5. Liste des questions d'entrevue recommandées, 4. Compétences de base pour améliorer le taux de réussite, 3. Questions professionnelles, 2. Questions et réponses de simulation de scénarios, 1. Questions et réponses de capacité professionnelle.
Il s'agit d'une carte mentale sur les méthodes de recherche de la littérature, et son contenu principal comprend: 5. Méthode complète, 4. Méthode de traçabilité, 3. Méthode de vérification des points, 2. Méthode de recherche inversée, 1. Méthode de recherche durable.
Il s'agit d'une carte mentale sur les anévrismes intracrâniens, avec le contenu principal, notamment: le congé, l'évaluation d'admission, les mesures infirmières, les mesures de traitement, les examens auxiliaires, les manifestations cliniques et les définitions.
Il s'agit d'une carte mentale sur l'entretien de comptabilité des coûts, le principal contenu comprend: 5. Liste des questions d'entrevue recommandées, 4. Compétences de base pour améliorer le taux de réussite, 3. Questions professionnelles, 2. Questions et réponses de simulation de scénarios, 1. Questions et réponses de capacité professionnelle.
Il s'agit d'une carte mentale sur les méthodes de recherche de la littérature, et son contenu principal comprend: 5. Méthode complète, 4. Méthode de traçabilité, 3. Méthode de vérification des points, 2. Méthode de recherche inversée, 1. Méthode de recherche durable.
Trabalhador da Web
O nascimento do Web Worker
Como todos sabemos, js foi originalmente projetado para rodar no navegador
Para evitar que vários threads operem o DOM ao mesmo tempo e causem conflitos de renderização, o executor js foi projetado para ser de thread único.
Com o desenvolvimento da tecnologia front-end, ao se deparar com cenários que exigem muitos cálculos, os threads js muitas vezes ficam bloqueados por muito tempo, podendo até causar congelamentos de páginas, afetando a experiência do usuário.
Saiba mais sobre Web Workers
O que é um trabalhador da Web?
Web Workers fazem parte do padrão HTML5
Define um conjunto de APIs que nos permitem abrir um novo thread de trabalho fora do thread js principal e executar um script js nele
Dá aos desenvolvedores a capacidade de usar js para operar multithreads
A UI do aplicativo web permanece responsiva mesmo se o script for executado por um longo período
Vantagens dos trabalhadores da Web
Melhorar o desempenho da página: execute algumas operações que exigem muito cálculo ou demoradas no thread em segundo plano, como processamento de dados, processamento de imagens, etc., sem ocupar o thread principal, evitando atrasos ou congelamentos da página e melhorando o desempenho e a capacidade de resposta da página. .
Processar dados em grande escala: Dados em grande escala podem ser processados porque são executados em threads separados e não afetarão a execução do thread principal. Dados em grande escala podem ser processados com mais eficiência, melhorando a eficiência e escalabilidade do código.
Torne o código mais modular: O código pode ser dividido em vários módulos e executado em diferentes threads, tornando o código mais modular, sustentável e legível.
Suporte multithreading: suporte multithreading, para que você possa aproveitar as vantagens dos processadores multi-core para melhorar a eficiência de execução do seu código.
Cenários de uso do Web Worker
Processamento de imagem: como rotação, corte, dimensionamento, filtros, etc. Isso melhora o desempenho e a capacidade de resposta do processamento de imagem.
Processamento de dados: como filtragem, classificação, resumo e transformação de conjuntos de dados, etc. Isso melhora a eficiência e a precisão do processamento de dados.
Tarefas computacionalmente intensivas: como simulação, otimização, previsão, estatística, etc. Isso melhora a velocidade e a precisão das tarefas de computação.
Comunicação em tempo real: como salas de chat, jogos, videoconferência, etc. Isso melhora a estabilidade e o desempenho das comunicações em tempo real.
Cache offline: os recursos comumente usados podem ser pré-baixados no cache local do cliente e os recursos do cache podem ser usados quando a Internet não puder ser acessada. Isso pode melhorar a usabilidade e a capacidade de resposta do seu aplicativo, especialmente em dispositivos móveis.
Processamento multithread: como computação paralela, distribuição de tarefas, balanceamento de carga, etc. Isso melhora a simultaneidade e escalabilidade do sistema.
Uso do Web Worker
Crie um Worker: Basta chamar o construtor Worker() através de new, que recebe dois parâmetros: const trabalhador = new Worker(caminho, opções);
js thread principal e transferência de dados do thread de trabalho: o thread principal e o thread de trabalho enviam mensagens por meio do método postMessage e ouvem o evento de mensagem para receber mensagens
A transferência de dados entre o thread principal e o thread de trabalho é feita por valor e não por endereço. Portanto, mesmo que um Objeto seja passado e retornado diretamente, o valor recebido não é o valor original.
Ouvindo mensagens de erro: o web trabalhador fornece dois eventos para escutar erros
erro: acionado quando ocorre um erro dentro do trabalhador
messageerror: acionado quando o evento de mensagem recebe parâmetros que não podem ser desserializados
Fechar o thread de trabalho: O encerramento do thread de trabalho pode ser operado tanto no thread principal quanto no thread de trabalho, mas o impacto no thread de trabalho é um pouco diferente.
Semelhança: quer o trabalhador seja encerrado no thread principal ou o trabalhador seja encerrado dentro do thread de trabalho, as tarefas no Loop de Eventos atual do thread de trabalho continuarão a ser executadas.
A diferença: quando o trabalhador é fechado manualmente no thread principal, a conexão entre o thread principal e o thread de trabalho será interrompida imediatamente. Mesmo que ainda haja tarefas a serem executadas no Event Loop atual do thread de trabalho, o postMessage. () continuará a ser chamado, mas o thread principal não receberá mais a mensagem. Fechar o trabalhador dentro do thread de trabalho não o desconectará diretamente do thread principal. Em vez disso, ele aguardará até que todas as tarefas do Event Loop atual do thread de trabalho sejam concluídas antes de fechá-lo. Em outras palavras, se você continuar a chamar o método postMessage() no Event Loop atual, o thread principal ainda poderá receber mensagens ouvindo o evento de mensagem.
Thread de trabalho faz referência a outros arquivos js
O Web Worker fornece o método importScripts() no thread de trabalho para carregar os arquivos js que precisamos. Além disso, os arquivos js carregados por meio deste método não estão sujeitos à mesma política de origem.
Modo ESModule: Quando o arquivo js está no modo ESModule, importScripts() falhará ao importar o arquivo. Nesse caso, você precisa usar const trabalhador = new Worker('/worker.js', {type: 'module'}. ) para especificar o tipo de arquivo e, em seguida, você pode Introduzir usando o método de importação
Quais tipos de dados podem ser passados entre o thread principal e os threads de trabalho
Objetos Error e Function e nós Dom não podem ser passados
Trabalhador Compartilhado
É um tipo especial de Worker que pode ser acessado por múltiplos contextos de navegação, como múltiplas janelas, iframes e trabalhadores, mas esses contextos de navegação devem ter a mesma origem
Implementado em uma interface diferente dos trabalhadores comuns, com escopo global diferente: SharedWorkerGlobalScope, mas herdado de WorkerGlobalScope
A diferença com os trabalhadores: o thread principal e o thread SharedWorker estabelecem um link por meio de MessagePort, e os métodos de comunicação de dados são todos montados em SharedWorker.port. Se addEventListener for usado para receber eventos de mensagem, depois que o thread principal inicializar SharedWorker(), ele. deve ser chamado o método SharedWorker.port.start() para abrir manualmente a porta, mas se o método onmessage for usado, a porta será aberta por padrão e não há necessidade de chamar manualmente o método SharedWorker.port.start().
Nota: Usar o console para imprimir informações no thread sharedWorker não aparecerá no console do thread principal.
Para depurar o sharedWorker, você precisa inserir chrome://inspect/ no navegador Chrome. Aqui você pode ver todos os sharedWorkers em execução e, em seguida, abrir um painel de ferramentas de desenvolvimento independente.
compatibilidade
Os Web Workers já são suportados pela maioria dos navegadores e basicamente não há necessidade de considerar problemas de compatibilidade ao usá-los.
A compatibilidade do sharedWorker no Safari e em terminais móveis não é muito boa, então você precisa prestar atenção ao usá-lo.