const workerUrl = new URL("./test.js", import.meta.url).toString();
var worker = new Worker(workerUrl);
worker.postMessage(10000000000); //向子线程发送数据
worker.onmessage = function (event) { //子线程处理完数据
console.log(event.data);
console.log(num,new Date().getTime() - t);
};
./test.js
self.onmessage = function (event) {
var data = event.data;
console.log(data);
var num = 0;
for (var i = 0; i < data; i++) {
num += i;
}
self.postMessage(num); //向主线程发送
}
多线程
// 主应用程序文件 main.js
// 创建第一个 Web Worker
const worker1 = new Worker('worker1.js');
// 创建第二个 Web Worker
const worker2 = new Worker('worker2.js');
// 创建一个数组来存储每个Worker的结果
const results = [];
// 监听第一个 Worker 的消息
worker1.addEventListener('message', (e) => {
const result = e.data;
results.push(result);
// 当所有Worker都完成任务时,整合结果
if (results.length === 2) {
const finalResult = integrateResults(results);
console.log('Final Result:', finalResult);
}
});
// 监听第二个 Worker 的消息
worker2.addEventListener('message', (e) => {
const result = e.data;
results.push(result);
// 当所有Worker都完成任务时,整合结果
if (results.length === 2) {
const finalResult = integrateResults(results);
console.log('Final Result:', finalResult);
}
});
// 向第一个 Worker 发送消息
worker1.postMessage('Message to Worker 1');
// 向第二个 Worker 发送消息
worker2.postMessage('Message to Worker 2');
function integrateResults(results) {
// 在这里执行结果的整合逻辑
return results.reduce((sum, result) => sum + result, 0);
}