Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Guida ad HTML5: eseguire codice JavaScript in background (3/3)
Scritto da Pellegrino Principe il 26-11-2010 ore 11:23
Seminario Intel
Concludiamo la disamina dei Web Worker evidenziando che gli statement JavaScript, scritti all’interno di un worker, non possono utilizzare l’oggetto window e di conseguenza il suo riferimento all’oggetto document, con le relative API per la manipolazione e gestione del DOM (Document Object Model).

Al contempo, il worker ha un suo scope (ambito di risoluzione globale) che differisce da quello della pagina web, e pertanto il riferimento this non farà mai riferimento all’oggetto window, bensì all’oggetto worker stesso. Tramite il “suo” this potremo, pertanto, accedere solo ai seguenti elementi: l’oggetto self; la funzione di tipo costruttore XMLHttpRequest; l’oggetto navigator con le proprietà appName, appVersion, userAgent, platform; le funzioni di tipo costruttore stabilite nello standard ECMAScript (come Array, String, Date, RegExp, Object ecc.); l’oggetto location (uguale all’oggetto window.location) in sola lettura; la funzione setTimeout; la funzione setInterval e la funzione importScripts.

Quest’ultima consente di importare, all’interno del contesto del worker e in modo sincrono, dei file JavaScript. Così, ad esempio, la seguente invocazione importerà i file check.js e execute.js nel corrente worker:
  1. importScripts("check.js", "execute.js");

L’argomento passato alla funzione postMessage può contenere un valore di qualsiasi tipo (Object, Array, primitivo ecc.). In caso di passaggio di un tipo oggetto, esso può essere utilizzato dalla pagina web e dal worker come se lo condividessero, pur avendo contesti di esecuzione differenti, e ciò grazie al fatto che tale oggetto viene serializzato e deserializzato automaticamente.

Inoltre, un worker può essere terminato programmaticamente dalla pagina web invocando la funzione terminate, e nell’ambito del worker invocando la funzione close. E’ importante sottolineare che dopo la terminazione, o chiusura, il worker non esisterà più e pertanto, se vorremo riutilizzarlo, dovremo crearlo nuovamente non essendo disponibile una funzione di restart. Da un worker è anche possibile creare altri worker per l’esecuzione di specifiche computazioni dividendo, di fatto, il lavoro in più subworker.

Infine, annotiamo che nell’ambito della specifica dei Web Worker esistono anche i cosiddetti Shared worker (worker condivisi), creati con la funzione di tipo costruttore window.SharedWorker. Essi, in breve, permettono a più documenti di accedere allo stesso worker e a quest’ultimo di servire più documenti. Tuttavia, gli unici browser che al momento li supportano sono Chrome e Opera.
Precedente: Oggetti Python in cella con pyspread
Successiva: Guida ai cavi e connettori: connettori USB (4/4)
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.196 secondi.