Skip to content

Main Thread

The main thread creates workers, sends them data, and receives results via postMessage() and onmessage.

// Create a worker from a separate JS file
const worker = new Worker('worker.js');
// Send data to worker
worker.postMessage({ numbers: [1, 2, 3, 4, 5] });
// Receive results from worker
worker.onmessage = (event) => {
console.log('Result from worker:', event.data);
};
// Handle errors
worker.onerror = (error) => {
console.error('Worker error:', error.message);
};
flowchart LR
subgraph "Main Thread"
A["UI Updates"]
B["User Events"]
C["DOM Manipulation"]
end
subgraph "Worker Thread"
D["Heavy Computation"]
E["Data Processing"]
F["File Parsing"]
end
Main -->|"postMessage()"| Worker
Worker -->|"postMessage()"| Main
style Worker fill:#4CAF50
style Main fill:#2196F3
// Stop the worker
worker.terminate();
// After termination, the worker can no longer be used
  • Create with new Worker('file.js')
  • Send data with worker.postMessage(data)
  • Receive with worker.onmessage = (e) => {}
  • Terminate with worker.terminate()