@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
JavaScript
;
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}`));
});
});
}