UNPKG

whale-plus

Version:

A Component Library for Vue 3

34 lines (31 loc) 985 B
import { ChunkSplitor } from '../ChunkSplitor.mjs'; const import_meta = {}; class MultiThreadSplitor extends ChunkSplitor { constructor() { super(...arguments); this.workers = Array.from({ length: navigator.hardwareConcurrency || 4 }).fill(0).map( () => new Worker(new URL("./SplitWorker.ts", import_meta.url), { type: "module" }) ); } calcHash(chunks, emitter) { const workerSize = Math.ceil(chunks.length / this.workers.length); this.workers.forEach((worker, index) => { const start = index * workerSize; const end = Math.min((index + 1) * workerSize, chunks.length); const workerChunks = chunks.slice(start, end); worker.postMessage(workerChunks); worker.onmessage = (e) => { emitter.emit("chunks", e.data); }; }); } dispose() { this.workers.forEach((worker) => worker.terminate()); } } export { MultiThreadSplitor }; //# sourceMappingURL=MultiThreadSplitor.mjs.map