Пояснительный пример, основная страница:
Для запуска фонового процесса создается экземпляр объекта Workers с указанным путем до скрипта. Сообщение между основной запускаемой страницей и фоновым потоком происходит при помощи метода postMessage.Copy Source | Copy HTML
<!DOCTYPE HTML>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script>
- window.onload = function () {
- var worker = new Worker("message.js");// Creates a Web Worker
- worker.onmessage = function (e) {// Triggered by postMessage in the Web Worker
- document.write('Worker said: ', e.data);// e.data is the values from the Web Worker
- };
- worker.onerror = function (e) {// If the Web Worker throws an error
- document.write(e.data);
- };
- worker.postMessage('World!'); // Send data to our worker.
- };
- </script>
- </head>
- <body>
- </body>
- </html>
Пример message.js:
В запускаемом файле есть допуск к объекту контекста this или self, который можно использовать:Copy Source | Copy HTML
onmessage = function (evt) {
- postMessage("hello "+evt.data+"!");
- };
Copy Source | Copy HTML
self.addEventListener('message', function(e) {
- var rez="hello "+e.data+"!";
- self.postMessage(rez);
- }, false);
Возможности доступные в Workers
Из того что можно запустить в основоном потоке в Workers доступны,navigator object
location object (read-only)
XMLHttpRequest
setTimeout()/clearTimeout() and setInterval()/clearInterval()
The Application Cache
Импорт внешних скриптов при помощи вызова метода importScripts()
Запуск других фоновых объектов
Workers не имеет доступа к:
DOM (it's not thread-safe)
window object
document object
parent object
В Workers есть возможность загрузки внешних скриптов при помощи вызова метода importScripts(). Метод importScripts может принимать несколько параметров с указанием путей до файлов:
importScripts('script1.js', 'script2.js');
Почитать больше можно на - www.html5rocks.com
Комментариев нет:
Отправить комментарий