Szukam rzeczywistego scenariusza do korzystania z interfejsu Web Workers API .
Szukam rzeczywistego scenariusza do korzystania z interfejsu Web Workers API .
Odpowiedzi:
John Resig ( znany z jQuery) ma tutaj kilka interesujących przykładów wykorzystania pracowników sieciowych - gier, grafiki, kryptowalut.
Innym zastosowaniem jest Web I / O - innymi słowy odpytywanie adresów URL w tle. W ten sposób nie blokujesz interfejsu użytkownika oczekującego na wyniki sondowania.
Kolejne praktyczne zastosowanie: w Bespin używają Web Workerów do podświetlania składni, czego nie chcesz blokować edycji kodu podczas korzystania z aplikacji.
Od Mozilli : Jednym ze sposobów przydatności pracowników jest umożliwienie Twojemu kodowi wykonywania obliczeń intensywnie wykorzystujących procesor bez blokowania wątku interfejsu użytkownika.
Jako praktyczny przykład pomyśl o aplikacji, która ma dużą tabelę # (to jest prawdziwy świat, BTW - zaczerpnięte z aplikacji, którą zaprogramowałem ~ 2 lata temu). Możesz zmienić jeden # w tabeli za pomocą pola wejściowego, a kilka innych liczb w różnych kolumnach zostanie ponownie obliczonych w dość intensywnym procesie.
Stary przepływ pracy: Zmień #. Idź po kawę, podczas gdy JavaScript przetwarza zmiany w innych liczbach, a strona internetowa nie odpowiada przez 3 minuty - po tym, jak zoptymalizowałem ją do diabła iz powrotem. Wracaj z kawą. Zmień drugi #. Powtarzaj wiele razy. Kliknij przycisk ZAPISZ.
Nowy przepływ pracy z pracownikami może wyglądać następująco: Zmień #. Otrzymuj komunikat o stanie, że coś jest ponownie obliczane, ale możesz zmienić inne #s. Zmień więcej #s. Po zakończeniu zmiany poczekaj, aż status zmieni się na „wszystkie obliczenia zakończone, możesz teraz przejrzeć ostatnie # i zapisać”.
Używałem ich do wysyłania większych ilości danych z przeglądarki na serwer. Oczywiście możesz to zrobić za pomocą zwykłych połączeń AJAX, ale jeśli zajmie to jedno z cennych połączeń na nazwę hosta. Ponadto, jeśli użytkownik dokona przejścia strony podczas tego procesu (np. Kliknie link), Twoje obiekty JavaScript z poprzedniej strony znikną i nie możesz przetwarzać wywołań zwrotnych. Kiedy używany jest web Worker, ta czynność ma miejsce poza pasmem, więc masz lepszą gwarancję, że zostanie ukończona.
Inny przypadek użycia:
Kompresja / dekompresowanie plików w tle, jeśli masz dużo obrazów i innych plików multimedialnych, które są wymieniane z serwera w formacie skompresowanym.
<canvas>
), możesz pobrać dane obrazu w formacie skompresowanym (np. Png). Nie chodziło mi o to, że kompresowanie w JS nigdy nie jest właściwe; Chodziło mi o to, że w większości przypadków tak nie jest , aw większości przypadków - szczególnie w przypadku obrazów, o czym mówi ta odpowiedź - istnieje lepsza alternatywa dla toczenia własnej kompresji.