Threading¶
Worker¶
Über Worker-Objekte können Programmfunktionen in einen eigenen Thread ausgelagert werden. Dies erlaubt
es, dass rechenintensive Funktionen das User-Interface nicht blockieren. Neue Worker können direkt über den
Konstruktor new Worker(url)
gestartet werden. Alvine bietet zwei Hilfsfunktionen an, die einen Worker erstellen.
Alvine.Threading.Factory.createWorkerFromURL(url, message, error)
erstellt einen Worker und hängt die
Messagehandler message
und error
ein. Diese Callbacks werden im Falle einer eingehenden Nachricht oder eines
Fehler aufgerufen.
Die Funktion Alvine.Threading.Factory.createWorkerFromScriptTag
erlaubt das Erstellen eines Inline-Workers. Durch die
Angabe des MimeTypes javascript/worker
im Script-Tag, wird dieses Script nicht direkt ausgeführt, sondern erst über die
Factory-Funktion als Worker ausgeführt.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<!-- Wichtig: Mimetype javascript/worker -->
<script id="worker1" type="javascript/worker">
self.onmessage = function(e) {
// e.data -> startmessage
self.postMessage('message from worker');
};
</script>
<script>
worker = Alvine.Threading.Factory.createWorkerFromScriptTag('#worker1', function(e) {
// e.data -> message from worker
});
// Worker starten
worker.postMessage('startmessage');
</script>
</body>
</html>