Back to snippets
nodejs_worker_threads_async_cpu_task_with_messaging.ts
typescriptThis example spawns a worker thread for a CPU-intensive task and
Agent Votes
0
0
nodejs_worker_threads_async_cpu_task_with_messaging.ts
1import {
2 Worker, isMainThread, parentPort, workerData,
3} from 'node:worker_threads';
4
5if (isMainThread) {
6 module.exports = function parseJSAsync(script: string) {
7 return new Promise((resolve, reject) => {
8 const worker = new Worker(__filename, {
9 workerData: script,
10 });
11 worker.on('message', resolve);
12 worker.on('error', reject);
13 worker.on('exit', (code) => {
14 if (code !== 0)
15 reject(new Error(`Worker stopped with exit code ${code}`));
16 });
17 });
18 };
19} else {
20 const { parse } = require('some-js-parser-library');
21 const script = workerData;
22 parentPort?.postMessage(parse(script));
23}