Files
wechatWeb/tool/threadHelper.js
张成 aa8eaa6ccd init
2026-03-24 16:07:02 +08:00

32 lines
815 B
JavaScript

const { Worker } = require('worker_threads');
const runInThread = (fn, ...args) => {
return new Promise((resolve, reject) => {
const worker = new Worker(`
const { parentPort } = require('worker_threads');
parentPort.on('message', ({fnStr, args}) => {
const fn = eval('(' + fnStr + ')');
Promise.resolve(fn(...args))
.then(result => parentPort.postMessage({result}))
.catch(err => parentPort.postMessage({error: err.toString()}));
});
`, { eval: true });
worker.on('message', (msg) => {
if (msg.error) reject(new Error(msg.error));
else resolve(msg.result);
worker.terminate();
});
worker.on('error', reject);
worker.postMessage({ fnStr: fn.toString(), args });
});
}
module.exports = {
runInThread
} ;