HTML5的多线程技术:Web Worker API
Web Worker API 是 HTML5 提供的一个多线程解决方案,可以将大量计算工作移到后台线程上,避免阻塞主线程,使得主线程能够更加平滑地执行用户界面的更新等操作。
以下是一个简单的示例,演示如何使用 Web Worker 来执行一个简单的计算任务:
主线程代码 (index.html):
<!DOCTYPE html>
<html>
<head>
<title>Web Worker Example</title>
<script>
function startWorker() {
if(typeof(Worker) !== "undefined") {
// 创建一个新的 Web Worker
var worker = new Worker("worker.js");
// 监听从 worker 接收到的消息
worker.onmessage = function(event) {
console.log("Received message from worker: ", event.data);
};
// 发送消息给 worker 进行计算
worker.postMessage(10);
} else {
console.log("Sorry, your browser does not support Web Workers.");
}
}
</script>
</head>
<body>
<button onclick="startWorker()">Start Worker</button>
</body>
</html>
Web Worker 代码 (worker.js):
// 在 worker 线程中执行的代码
onmessage = function(event) {
// 接收主线程发送的消息
var number = event.data;
// 执行一个简单的计算任务
var factorial = calculateFactorial(number);
// 发送计算结果回主线程
postMessage(factorial);
};
function calculateFactorial(number) {
var result = 1;
for (var i = 2; i <= number; i++) {
result *= i;
}
return result;
}
在这个例子中,当用户点击按钮时,会创建一个新的 Web Worker 线程,并在该线程中执行一个计算阶乘的函数。计算完成后,worker 会通过 postMessage
方法将结果返回给主线程,主线程通过 onmessage
事件监听器接收消息并在控制台输出结果。
评论已关闭