Chore: try to fix worker crash

This commit is contained in:
SukkaW 2023-11-29 21:58:16 +08:00
parent 34c67e5a0d
commit e26bb209cb
2 changed files with 14 additions and 7 deletions

View File

@ -53,13 +53,13 @@ import { TaskResult } from './lib/trace-runner';
const buildInternalReverseChnCIDRPromise = new Promise<TaskResult>(resolve => {
const handleMessage = (e: MessageEvent<TaskResult>) => {
buildInternalReverseChnCIDRWorker.unref();
const { data } = e;
buildInternalReverseChnCIDRWorker.postMessage('exit');
buildInternalReverseChnCIDRWorker.removeEventListener('message', handleMessage);
resolve(data);
};
buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage, { once: true });
buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage);
buildInternalReverseChnCIDRWorker.postMessage('build');
});

View File

@ -1,11 +1,18 @@
declare const self: Worker;
self.addEventListener('message', async (e: MessageEvent<'build' | 'exit'>) => {
import { buildInternalReverseChnCIDR } from '../build-internal-reverse-chn-cidr';
// preload the task
const promise = buildInternalReverseChnCIDR();
const handleMessage = async (e: MessageEvent<'build' | 'exit'>) => {
if (e.data === 'build') {
const { buildInternalReverseChnCIDR } = await import('../build-internal-reverse-chn-cidr');
const stat = await buildInternalReverseChnCIDR();
const stat = await promise;
postMessage(stat);
} else if (e.data === 'exit') {
process.exit(0);
self.removeEventListener('message', handleMessage);
self.unref();
}
}, { once: true });
};
self.addEventListener('message', handleMessage);