JavaScript
Børre Stenseth

JavaScript Workers

Hva

Workers er innført som en egen spesifikasjon og fungerer sammen med HTML5, se WHATVGs spesifikasjon [1] . Poenget er å kjøre beregningskrevende oppgaver i en egen tråd, uten å influere aktiviteten på en webside. Dette er selvsagt en sannhet med modifikasjoner siden vi til syvende og sist belaster den samme prosesoren

En webworker er i korthet et stykke JavaScript-kode som går i en egen tråd uten å ha tilgang til window og document. Kommunikasjonen med "hoved"-skriptet foregår med meldinger.

Du finner et par enkle eksempler i de neste modulene og biblioteket "speak" i modulen speak bruker workers.

Funksjonalitet i en worker:

  • Importere (og fortløpende evaluere) script ved hjelp av importScripts()
  • Lytte på meldinger, onmessage begivenheter. Meldingsinnholdet kan være string, og derved JSON.
  • Sende meldinger postMessage(). Meldingsinnholdet kan være string, og derved JSON.
  • Bruke de vanlige JavaScript-funksjonene setTimeout() / clearTimeout() og setInterval() / clearInterval().

Typiske arbeidsoppgaver som i enkelte situasjoner kan gjøres av en worker:

  • Delegere til andre workers.
  • Arbeide med Web SQL databaser
  • Sende AJAX forespørsler via XMLHttpRequest.
  • Handtere tidsfrister.
  • Arbeide med Web Sockets

Det kan være mange grunner til å delegere oppgaver til en worker. Alt i lista over kan sekvsagt gjøres i et javaskript på vanlig måte. F.eks. kan jo en AJAX-forespørsel i seg selv være en asynkron arbeidsoppgave. Når vi likevel kan vurdere å gjøre jobben via en worker, kan jo begrunnelsen være så enkel som at vi ønsker ryddig og gjenbrukbar kode.

Det er også verdt å merke seg at workers kan deles mellom websider, shared workers. mer om dette kommer ....

Referanser
  1. HTML-Specifications WHATWG www.whatwg.org/specs/ 12-02-2014