From ebf2ee870114191e17254fe276b6be0898458e6d Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Fri, 1 Aug 2025 07:37:01 -0700 Subject: [PATCH] Throw from worker if terminated. --- src/lib/worker-queue.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/worker-queue.ts b/src/lib/worker-queue.ts index 6fe2bc6..e2de7eb 100644 --- a/src/lib/worker-queue.ts +++ b/src/lib/worker-queue.ts @@ -20,6 +20,7 @@ export class WorkerQueue { #job?: Task #isIdle: boolean + #isTerminated: boolean #queue: Task[] = [] #url: string #worker: Worker | NodeWorker @@ -32,6 +33,7 @@ export class WorkerQueue { */ constructor (worker: string) { this.#isIdle = true + this.#isTerminated = false this.#queue = [] this.#url = URL.createObjectURL(new Blob([worker], { type: 'text/javascript' })) BROWSER: this.#worker = new Worker(this.#url, { type: 'module' }) @@ -60,10 +62,14 @@ export class WorkerQueue { terminate (): void { this.#job = undefined this.#worker.terminate() + this.#isTerminated = true } async #assign (data: NamedData, enqueue: (task: Task) => number): Promise> { return new Promise(async (resolve, reject): Promise => { + if (this.#isTerminated) { + reject('Worker terminated') + } const task: Task = { id: performance.now(), data, -- 2.47.3