UNPKG

@onurege3467/zerohelper

Version:

ZeroHelper is a versatile high-performance utility library and database framework for Node.js, fully written in TypeScript.

36 lines (35 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runAsyncTask = runAsyncTask; // functions/worker.ts const worker_threads_1 = require("worker_threads"); /** * Runs a function in a separate background thread. * Ideal for heavy math, data processing, or large ZPack manipulations. */ async function runAsyncTask(taskFn, data) { return new Promise((resolve, reject) => { const workerCode = ` const { parentPort, workerData } = require('worker_threads'); try { const fn = ${taskFn}; const result = fn(workerData); parentPort.postMessage({ result }); } catch (error) { parentPort.postMessage({ error: error.message }); } `; const worker = new worker_threads_1.Worker(workerCode, { eval: true, workerData: data }); worker.on('message', (msg) => { if (msg.error) reject(new Error(msg.error)); else resolve(msg.result); }); worker.on('error', reject); worker.on('exit', (code) => { if (code !== 0) reject(new Error(`Worker stopped with exit code ${code}`)); }); }); }