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 buildInternalReverseChnCIDRPromise = new Promise<TaskResult>(resolve => {
const handleMessage = (e: MessageEvent<TaskResult>) => { const handleMessage = (e: MessageEvent<TaskResult>) => {
buildInternalReverseChnCIDRWorker.unref();
const { data } = e; const { data } = e;
buildInternalReverseChnCIDRWorker.postMessage('exit'); buildInternalReverseChnCIDRWorker.postMessage('exit');
buildInternalReverseChnCIDRWorker.removeEventListener('message', handleMessage);
resolve(data); resolve(data);
}; };
buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage, { once: true }); buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage);
buildInternalReverseChnCIDRWorker.postMessage('build'); buildInternalReverseChnCIDRWorker.postMessage('build');
}); });

View File

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