Back to snippets

nodejs_worker_threads_async_cpu_task_with_messaging.ts

typescript

This example spawns a worker thread for a CPU-intensive task and

19d ago23 linesnodejs.org
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}