Je recherche des scénarios du monde réel pour utiliser l' API Web Workers .
Je recherche des scénarios du monde réel pour utiliser l' API Web Workers .
Réponses:
John Resig (de renommée jQuery) a un tas d'exemples intéressants d'utilisation de web workers ici - jeux, graphiques, crypto.
Une autre utilisation est l'E / S Web - en d'autres termes, interroger les URL en arrière-plan. De cette façon, vous ne bloquez pas l'interface utilisateur en attente des résultats de l'interrogation.
Une autre utilisation pratique: dans Bespin, ils utilisent Web Workers pour faire la coloration syntaxique, ce que vous ne voudriez pas bloquer l'édition de code pendant que vous utilisez l'application.
De Mozilla : Une des façons dont les travailleurs sont utiles est de permettre à votre code d'effectuer des calculs gourmands en ressources processeur sans bloquer le thread de l'interface utilisateur.
À titre d'exemple pratique, pensez à une application qui a une grande table de #s (c'est le monde réel, BTW - tiré d'une application que j'ai programmée il y a environ 2 ans). Vous pouvez changer un # dans une table via un champ de saisie et un tas d'autres nombres dans différentes colonnes sont recalculés dans un processus assez intensif.
L'ancien workflow était: Modifiez le #. Allez prendre un café pendant que JavaScript passe à travers les modifications apportées à d'autres chiffres et que la page Web ne répond plus pendant 3 minutes - après l'avoir optimisée en enfer et vice-versa. Revenez avec un café. Changer un deuxième #. Répétez plusieurs fois. Cliquez sur le bouton ENREGISTRER.
Le nouveau workflow avec les workers pourrait être: Modifiez le #. Obtenez un message d'état indiquant que quelque chose est en cours de recalcul, mais vous pouvez modifier d'autres #. Changer plus de numéros. Une fois le changement terminé, attendez que le statut passe à "Tous les calculs sont terminés, vous pouvez maintenant revoir les # finaux et enregistrer".
Je les ai utilisés pour envoyer de plus grandes quantités de données du navigateur au serveur. Évidemment, vous pouvez le faire avec des appels AJAX réguliers, mais si cela prend l'une des précieuses connexions par nom d'hôte. De plus, si l'utilisateur effectue une transition de page pendant ce processus (par exemple, clique sur un lien), vos objets JavaScript de la page précédente disparaissent et vous ne pouvez pas traiter les rappels. Lorsqu'un travailleur Web est utilisé, cette activité se produit hors bande, vous avez donc une meilleure garantie qu'elle se terminera.
Un autre cas d'utilisation:
Compression / décompression de fichiers en arrière-plan, si vous avez beaucoup d'images et d'autres fichiers multimédias échangés depuis le serveur au format compressé.
<canvas>
), vous pouvez obtenir les données d'image dans un format compressé (par exemple png). Mon point n'était pas qu'il n'est jamais approprié de compresser dans JS; mon point était que dans la plupart des cas , ce n'est pas le cas , et dans la plupart des cas - en particulier en ce qui concerne les images, ce dont parle cette réponse - il existe une meilleure alternative au roulement de votre propre compression.