Webový pracovník - Web worker

A webový pracovník, jak je definováno v World Wide Web Consortium (W3C) a Pracovní skupina pro webovou hypertextovou aplikační technologii (WHATWG), je a JavaScript skript provedeno z HTML stránka, která běží v Pozadí, nezávisle na skriptech, které také mohly být spuštěny ze stejné stránky HTML.[1] Pracovníci webu jsou často schopni využít vícejádrový CPU efektivněji.[2]

W3C a WHATWG si představují webové pracovníky jako dlouhodobé skripty, které nejsou přerušeny skripty, které reagují na kliknutí nebo jiné interakce uživatelů. Zabránění tomu, aby byli tito pracovníci vyrušováni aktivitami uživatelů, by mělo umožnit webovým stránkám, aby zůstaly reagovat současně se spuštěním dlouhých úkolů na pozadí.

Nejjednodušší použití pracovníků je pro provedení výpočetně nákladného úkolu bez přerušení uživatelského rozhraní.

Specifikace webového pracovníka je součástí HTML Životní úroveň.[1]

Přehled

Jak předpokládá WHATWG, weboví pracovníci mají relativně velkou váhu a nejsou zamýšleni pro použití ve velkém počtu. Očekává se, že budou mít dlouhou životnost, vysoké náklady na výkon při spuštění a vysoké náklady na paměť pro každou instanci.[1]

Pracovníci webu běží mimo kontext skriptů dokumentu HTML. Proto tedy nemají přístup k internetu DOM, mohou usnadnit souběžně provádění programů JavaScriptu.

Funkce

Pracovníci webu interagují s hlavním dokumentem prostřednictvím předávání zpráv. Následující kód vytvoří pracovníka, který provede JavaScript v daném souboru.

var pracovník = Nový Pracovník(„worker_script.js“);

Chcete-li pracovníkovi odeslat zprávu, postMessage je použita metoda pracovního objektu, jak je znázorněno níže.

pracovník.postMessage("Ahoj světe!");

The zpráva Vlastnost používá obslužnou rutinu události k načtení informací od pracovníka.

pracovník.zpráva = funkce(událost) {	výstraha(„Přijatá zpráva“ + událost.data);	dělej něco();}	funkce dělej něco() {	// dělat práci	pracovník.postMessage("Práce hotova!");}pracovník.vypovědět();

Jakmile je pracovník ukončen, jde mimo rozsah a proměnná odkazující na něj se stává nedefinovanou; v tomto okamžiku musí být v případě potřeby vytvořen nový pracovník.

Příklad

Nejjednodušší použití webových pracovníků je pro provedení výpočetně nákladného úkolu bez přerušení uživatelského rozhraní.

V tomto příkladu hlavní dokument vytvoří webového pracovníka k výpočtu prvočísla a postupně zobrazuje naposledy nalezené prvočíslo.

Hlavní stránka je následující:

<!DOCTYPE html><html> <hlava>  <titul>Příklad pracovníka: Jednojádrový výpočet</titul> </hlava> <tělo>  <p>Nejvyšší dosud objevené prvočíslo je: <výstup id="výsledek"></výstup></p>  <skript>   var pracovník = Nový Pracovník('worker.js');   pracovník.zpráva = funkce (událost) {     dokument.getElementById('výsledek').textový obsah = událost.data;   };  </skript> </tělo></html>

The Pracovník() volání konstruktoru vytvoří webového pracovníka a vrátí a pracovník objekt představující tohoto webového pracovníka, který se používá ke komunikaci s webovým pracovníkem. Ten objekt je zpráva obslužná rutina události umožňuje kódu přijímat zprávy od webového pracovníka.

Samotný webový pracovník je následující:

var n = 1;var end_value = 10**7;Vyhledávání: zatímco (n <= end_value) {  n++;  pro (var i = 2; i <= Matematika.čtv(n); i++)    -li (n % i == 0)      pokračovat Vyhledávání;  // našel prime!  postMessage(n);}

Chcete-li odeslat zprávu zpět na stránku, postMessage () metoda se používá k odeslání zprávy, když je nalezen prime.[1]

Podpěra, podpora

Pokud prohlížeč podporuje webové pracovníky, bude v objektu globálního okna k dispozici vlastnost Worker.[3] Vlastnost Worker bude nedefinována, pokud prohlížeč nepodporuje to.

Následující příklad kódu kontroluje podporu webového pracovníka v prohlížeči

funkce browserSupportsWebWorkers() {  vrátit se Typ okno.Pracovník === "funkce";}

Pracovníky na webu aktuálně podporuje Chrome, Opera, Okraj, internet Explorer (verze 10), Mozilla Firefox, a Safari.[4][5][6] Mobilní Safari pro iOS podporuje webové pracovníky od iOS 5. The Android prohlížeč nejprve podporoval webové pracovníky v systému Android 2.1, ale podpora byla odebrána v systému Android verze 2.2–4.3 před obnovením v systému Android 4.4.[7][8]

Reference

  1. ^ A b C d Pracovníci webu, WHATWG, vyvoláno 3. června 2010
  2. ^ „HTML Living Standard“. Html.spec.whatwg.org. 30. ledna 2017. Citováno 31. ledna 2017.
  3. ^ „Provoz HTML5“ Mark Pilgrim. O'Reilly / Google Press. Srpna 2010
  4. ^ „Představujeme HTML5“, Lawson, B. a Sharp, R., 2011.
  5. ^ „HTML5 a CSS3“ Brian P. Hogan. Pragmatičtí programátoři, LLC 2010.
  6. ^ „Mohu použít ... Web Worker“. caniuse.com. Citováno 30. září 2019.
  7. ^ „Archivovaná kopie“. Archivovány od originál dne 19. října 2013. Citováno 10. července 2011.CS1 maint: archivovaná kopie jako titul (odkaz)
  8. ^ „Mohu použít ... Tabulky podpory pro HTML5, CSS3 atd.“. caniuse.com. Citováno 10. června 2017.

externí odkazy