JavaScript Web Worker 怎么使用 Blob URL
通过 url.createobjecturl() 将包含 worker 代码的 blob 对象转换为临时 url,并直接传入 new worker() 构造函数即可启动。这种方式无需服务器支持,适合在纯前端环境中动态生成和运行脚本。若需传递数据,调用 postmessage() 并在 onmessage 中监听响应。

如何向 Worker 发送消息并接收结果
主线程通过 worker.postMessage(data) 发送数据,Worker 内部通过 self.onmessage 事件处理器接收。处理完成后,Worker 再次调用 self.postMessage(result) 返回结果,主线程在 worker.onmessage 回调中获取最终值。

const code = `
self.onmessage = function(e) {
const data = e.data;
self.postMessage({ result: data * 2 });
};
`;
const blob = new Blob([code], { type: 'application/javascript' });
const workerUrl = URL.createObjectURL(blob);
const worker = new Worker(workerUrl);
worker.onmessage = (e) => console.log('Result:', e.data.result);
worker.postMessage(5); // Output: Result: 10
// Cleanup
worker.terminate();
URL.revokeObjectURL(workerUrl);`如何处理 Worker 中的错误与终止
当 Worker 内部发生未捕获异常时,主线程会触发 worker.onerror 事件,其中包含错误信息。为避免内存泄漏,应在不再需要时调用 worker.terminate() 并配合 URL.revokeObjectURL() 释放资源。
立即学习“Java免费学习笔记(深入)”;
const code = `
throw new Error('Simulated failure');
`;
const blob = new Blob([code], { type: 'application/javascript' });
const workerUrl = URL.createObjectURL(blob);
const worker = new Worker(workerUrl);
worker.onerror = (e) => console.error('Worker Error:', e.message);
setTimeout(() => {
worker.terminate();
URL.revokeObjectURL(workerUrl);
}, 1000);`


















