Sto cercando uno scenario reale per l'utilizzo dell'API Web Workers .
Sto cercando uno scenario reale per l'utilizzo dell'API Web Workers .
Risposte:
John Resig (di fama jQuery) ha un sacco di esempi interessanti di utilizzo dei web worker qui : giochi, grafica, criptovaluta.
Un altro uso è l'I / O Web: in altre parole, gli URL di polling in background. In questo modo non blocchi l'interfaccia utente in attesa dei risultati del polling.
Un altro uso pratico: in Bespin, stanno usando Web Worker per evidenziare la sintassi, che non vorresti bloccare la modifica del codice mentre stai usando l'app.
Da Mozilla : un modo in cui i lavoratori sono utili è consentire al codice di eseguire calcoli ad alta intensità di processore senza bloccare il thread dell'interfaccia utente.
Come esempio pratico, pensa a un'app che ha una grande tabella di #s (questo è il mondo reale, BTW - tratto da un'app che ho programmato ~ 2 anni fa). Puoi cambiare un # in una tabella tramite il campo di input e un sacco di altri numeri in colonne diverse vengono ricalcolati in un processo abbastanza intenso.
Il vecchio flusso di lavoro era: Cambia il #. Vai a prendere un caffè mentre JavaScript crunch attraverso le modifiche ad altri numeri e la pagina web non risponde per 3 minuti - dopo che l'ho ottimizzato all'inferno e viceversa. Torna con un caffè. Cambia un secondo #. Ripeti più volte. Fai clic sul pulsante SALVA.
Il nuovo flusso di lavoro con i lavoratori potrebbe essere: modificare il #. Ricevi un messaggio di stato in cui viene ricalcolato qualcosa ma puoi cambiare altri #. Cambia più #s. Al termine della modifica, attendere che lo stato cambi in "tutti i calcoli completati, ora è possibile rivedere gli # finali e salvare".
Li ho usati per inviare grandi quantità di dati dal browser al server. Ovviamente, puoi farlo con le normali chiamate AJAX, ma se questo occupa una delle preziose connessioni per nome host. Inoltre, se l'utente esegue una transizione di pagina durante questo processo (ad esempio, fa clic su un collegamento), gli oggetti JavaScript della pagina precedente scompaiono e non è possibile elaborare i callback. Quando viene utilizzato un web worker, questa attività avviene fuori banda, quindi hai una migliore garanzia che verrà completata.
Un altro caso d'uso:
Compressione / decompressione dei file in background, se sono presenti molte immagini e altri file multimediali che vengono scambiati dal server in formato compresso.
<canvas>
), puoi ottenere i dati delle immagini in un formato compresso (ad esempio png). Il mio punto non era che non è mai appropriato comprimere in JS; il mio punto è che nella maggior parte dei casi , è non è , e per la maggior parte dei casi - soprattutto a che fare con le immagini, che è ciò che questa risposta parla - c'è un'alternativa migliore per posizionare il proprio compressione.