Ich suche nach realen Szenarien für die Verwendung der Web Workers API .
Ich suche nach realen Szenarien für die Verwendung der Web Workers API .
Antworten:
John Resig (von jQuery) hat eine Reihe interessanter Beispiele für die Verwendung von Web-Workern - Spiele, Grafiken, Krypto.
Eine andere Verwendung ist Web I / O - mit anderen Worten, das Abrufen von URLs im Hintergrund. Auf diese Weise blockieren Sie nicht die Benutzeroberfläche, die auf Abfrageergebnisse wartet.
Eine weitere praktische Anwendung: In Bespin verwenden sie Web Worker, um die Syntax hervorzuheben. Sie möchten die Codebearbeitung nicht blockieren, während Sie die App verwenden.
Von Mozilla : Eine Möglichkeit für Mitarbeiter besteht darin, Ihrem Code zu erlauben, prozessorintensive Berechnungen durchzuführen, ohne den Thread der Benutzeroberfläche zu blockieren.
Stellen Sie sich als praktisches Beispiel eine App mit einer großen Tabelle mit #s vor (dies ist eine reale Welt, übrigens - entnommen aus einer App, die ich vor ca. 2 Jahren programmiert habe). Sie können ein # in einer Tabelle über ein Eingabefeld ändern, und eine Reihe anderer Zahlen in verschiedenen Spalten werden in einem ziemlich intensiven Prozess neu berechnet.
Der alte Workflow war: Ändern Sie die #. Holen Sie sich Kaffee, während JavaScript durch Änderungen an anderen Zahlen knirscht und die Webseite 3 Minuten lang nicht reagiert - nachdem ich sie für die Hölle und zurück optimiert habe. Komm zurück mit Kaffee. Ändern Sie eine zweite #. Wiederholen Sie viele Male. Klicken Sie auf die Schaltfläche SPEICHERN.
Der neue Workflow mit den Arbeitern könnte sein: Ändern Sie die #. Erhalten Sie eine Statusmeldung, dass etwas neu berechnet wird, Sie können jedoch andere # ändern. Ändern Sie weitere #s. Wenn Sie mit dem Ändern fertig sind, warten Sie, bis sich der Status auf "Alle Berechnungen sind abgeschlossen, Sie können jetzt die endgültigen #s überprüfen und speichern" ändert.
Ich habe sie verwendet, um größere Datenmengen vom Browser an den Server zu senden. Natürlich können Sie dies mit regulären AJAX-Aufrufen tun, aber wenn dies eine der wertvollen Verbindungen pro Hostname beansprucht. Wenn der Benutzer während dieses Vorgangs einen Seitenübergang durchführt (z. B. auf einen Link klickt), verschwinden Ihre JavaScript-Objekte von der vorherigen Seite und Sie können keine Rückrufe verarbeiten. Wenn ein Web-Worker verwendet wird, erfolgt diese Aktivität außerhalb des Bandes, sodass Sie eine bessere Garantie dafür haben, dass sie abgeschlossen wird.
Ein weiterer Anwendungsfall:
Komprimieren / Dekomprimieren von Dateien im Hintergrund, wenn Sie viele Bilder und andere Mediendateien haben, die im komprimierten Format vom Server ausgetauscht werden.
<canvas>
) generierten Bildern arbeiten , können Sie die Bilddaten in einem komprimierten Format (dh PNG) abrufen. Mein Punkt war nicht, dass es niemals angebracht ist, in JS zu komprimieren; Mein Punkt war, dass dies in den meisten Fällen nicht der Fall ist , und in den meisten Fällen - insbesondere beim Umgang mit Bildern, worüber diese Antwort spricht - gibt es eine bessere Alternative zum Rollen Ihrer eigenen Komprimierung.