JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


Webwerkers API


'n Webwerker is 'n JavaScript wat in die agtergrond loop, sonder om die werkverrigting van die bladsy te beïnvloed.


Wat is 'n webwerker?

Wanneer skrifte in 'n HTML-bladsy uitgevoer word, reageer die bladsy nie totdat die script klaar is nie.

'n Webwerker is 'n JavaScript wat op die agtergrond loop, onafhanklik van ander skrifte, sonder om die werkverrigting van die bladsy te beïnvloed. Jy kan voortgaan om te doen wat jy wil: kliek, dinge kies, ens., terwyl die webwerker in die agtergrond loop.

Blaaierondersteuning

Die nommers in die tabel spesifiseer die eerste blaaierweergawes wat Webwerkers ten volle ondersteun:

Chrome 4 IE 10 Firefox 3.5 Safari 4 Opera 11.5
Jan 2010 Sep 2012 Jun 2009 Jun 2009 Jun 2011

Webwerkers voorbeeld

Die voorbeeld hieronder skep 'n eenvoudige webwerker wat getalle in die agtergrond tel:

Voorbeeld

Count numbers:


Gaan Webwerkerondersteuning na

Voordat u 'n webwerker skep, kyk of die gebruiker se blaaier dit ondersteun:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


Skep 'n Webwerker-lêer

Kom ons skep nou ons webwerker in 'n eksterne JavaScript.

Hier skep ons 'n skrif wat tel. Die skrip word in die "demo_workers.js" lêer gestoor:

let i = 0;

function timedCount() {
  i ++;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

Die belangrike deel van die kode hierbo is die postMessage()metode - wat gebruik word om 'n boodskap terug na die HTML-bladsy te plaas.

Let wel: Normaalweg word webwerkers nie vir sulke eenvoudige skrifte gebruik nie, maar vir meer SVE-intensiewe take.


Skep 'n Webwerker-objek

Noudat ons die webwerkerlêer het, moet ons dit vanaf 'n HTML-bladsy oproep.

Die volgende reëls kyk of die werker reeds bestaan, indien nie - dit skep 'n nuwe webwerker-objek en loop die kode in "demo_workers.js":

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

Dan kan ons boodskappe van die webwerker stuur en ontvang.

Voeg 'n "onmessage"-gebeurtenisluisteraar by die webwerker.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

Wanneer die webwerker 'n boodskap plaas, word die kode binne die gebeurtenisluisteraar uitgevoer. Die data van die webwerker word in event.data gestoor.


Beëindig 'n Webwerker

Wanneer 'n webwerker-objek geskep word, sal dit voortgaan om vir boodskappe te luister (selfs nadat die eksterne skrif voltooi is) totdat dit beëindig word.

Om 'n webwerker en gratis blaaier-/rekenaarhulpbronne te beëindig, gebruik die terminate()metode:

w.terminate();

Hergebruik die Web Worker

As jy die werkerveranderlike op ongedefinieerd stel, nadat dit beëindig is, kan jy die kode hergebruik:

w = undefined;

Volledige webwerker voorbeeldkode

Ons het reeds die Werker-kode in die .js-lêer gesien. Hieronder is die kode vir die HTML-bladsy:

Voorbeeld

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
let w;

function startWorker() {
  if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
  }
  w.onmessage = function(event) {
    document.getElementById("result").innerHTML = event.data;
  };
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

Webwerkers en die DOM

Aangesien webwerkers in eksterne lêers is, het hulle nie toegang tot die volgende JavaScript-objekte nie:

  • Die venster voorwerp
  • Die dokument voorwerp
  • Die ouer-objek