html5 %3cobject%3e,HTML5

HTML5 Web Workers

A web worker is a JavaScript running in the background, without affecting the performance of the page.

What is a Web Worker?

When executing scripts in an HTML page, the page becomes unresponsive until the script is finished.

A web worker is a JavaScript that runs in the background, independently

of other scripts, without affecting the performance of the page. You can continue to do whatever you want:

clicking, selecting things, etc., while the web worker runs in the background.

Browser Support

The numbers in the table specify the first browser version that fully support Web Workers.

API

Web Workers

4.0

12.0

10.0

3.5

4.0

11.5

HTML Web Workers Example

The example below creates a simple web worker that count numbers in the background:

Example

Count numbers:

Start Worker

Stop Worker

Check Web Worker Support

Before creating a web worker, check whether the user's browser supports it:

if(typeof(Worker) !== "undefined") {

// Yes! Web worker support!

// Some code.....

}

else {

// Sorry! No Web Worker support..

}

Create a Web Worker File

Now, let's create our web worker in an external JavaScript.

Here, we create a script that counts. The script is stored in the "demo_workers.js" file:

var i = 0;

function timedCount()

{

i = i + 1;

postMessage(i);

setTimeout("timedCount()",500);

}

timedCount();

The important part of the code above is the postMessage() method - which is used to post a message back to the HTML page.

Note: Normally web workers are not used for such simple scripts, but for more CPU intensive tasks.

Create a Web Worker Object

Now that we have the web worker file, we need to call it from an HTML page.

The following lines checks if the worker already exists, if not - it creates a new web worker object and runs the code in

"demo_workers.js":

if(typeof(w) == "undefined") {

w = new Worker("demo_workers.js");

}

Then we can send and receive messages from the web worker.

Add an "onmessage" event listener to the web worker.

w.onmessage = function(event){

document.getElementById("result").innerHTML = event.data;

};

When the web worker posts a message, the code within the event listener is executed. The data

from the web worker is stored in event.data.

Terminate a Web Worker

When a web worker object is created, it will continue to listen for messages (even after the external script is finished) until it is terminated.

To terminate a web worker, and free browser/computer resources, use the

terminate() method:

w.terminate();

Reuse the Web Worker

If you set the worker variable to undefined, after it has been terminated,

you can reuse the code:

w = undefined;

Full Web Worker Example Code

We have already seen the Worker code in the .js file. Below is the code for the HTML page:

Example

Count numbers:

Start Worker

Stop Worker

var w;

function startWorker()

{

if(typeof(Worker) !== "undefined")

{

if(typeof(w) == "undefined") {

w = new Worker("demo_workers.js");

}

w.onmessage = function(event) {

document.getElementById("result").innerHTML = event.data;

};

}

else

{

document.getElementById("result").innerHTML = "Sorry! No Web Worker

support.";

}

}

function stopWorker()

{

w.terminate();

w = undefined;

}

Try it yourself »

Web Workers and the DOM

Since web workers are in external files, they do not have access to the following JavaScript objects:

The window object

The document object

The parent object

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值