Estou procurando cenários reais para usar a API Web Workers .
Estou procurando cenários reais para usar a API Web Workers .
Respostas:
John Resig (da fama do jQuery) tem vários exemplos interessantes de uso de trabalhadores da Web aqui - jogos, gráficos, criptografia.
Outro uso é a E / S da Web - em outras palavras, pesquisar URLs em segundo plano. Dessa forma, você não bloqueia a interface do usuário aguardando resultados da pesquisa.
Outro uso prático: em Bespin, eles estão usando Web Workers para destacar a sintaxe, que você não deseja bloquear a edição de código enquanto estiver usando o aplicativo.
Do Mozilla : Uma maneira de os funcionários serem úteis é permitir que seu código realize cálculos intensivos em processador sem bloquear o segmento da interface do usuário.
Como um exemplo prático, pense em um aplicativo com uma grande tabela de #s (este é o mundo real, BTW - retirado de um aplicativo que eu programei ~ 2 anos atrás). Você pode alterar um # em uma tabela via campo de entrada e vários outros números em colunas diferentes são recalculados em um processo bastante intenso.
O fluxo de trabalho antigo era: Altere o #. Vá tomar um café enquanto o JavaScript processa alterações em outros números e a página da Web não responde por 3 minutos - depois que eu a otimizei para o inferno e para trás. Volte com café. Mude um segundo #. Repita várias vezes. Clique no botão SALVAR.
O novo fluxo de trabalho com os trabalhadores pode ser: Altere o #. Receba uma mensagem de status informando que algo está sendo recalculado, mas você pode alterar outros #. Alterar mais #s. Quando terminar de alterar, aguarde até que o status seja alterado para "todos os cálculos concluídos, agora você pode revisar os nºs finais e salvar".
Eu os usei para enviar grandes quantidades de dados do navegador para o servidor. Obviamente, você pode fazer isso com chamadas AJAX regulares, mas se isso exigir uma das conexões preciosas por nome de host. Além disso, se o usuário fizer uma transição de página durante esse processo (por exemplo, clicar em um link), seus objetos JavaScript da página anterior desaparecerão e você não poderá processar retornos de chamada. Quando um trabalhador da Web é usado, essa atividade ocorre fora da banda, para que você tenha uma garantia melhor de que ela será concluída.
Outro caso de uso:
Compactação / descompactação de arquivos em segundo plano, se você tiver muitas imagens e outros arquivos de mídia trocados do servidor em formato compactado.
<canvas>
), poderá obter os dados da imagem em um formato compactado (por exemplo, png). Meu argumento não era que nunca é apropriado compactar em JS; o que quero dizer é que, na maioria dos casos , não é , e para a maioria dos casos - especialmente lidando com imagens, sobre o que essa resposta fala -, há uma alternativa melhor para fazer sua própria compactação.