]> git.codecow.com Git - libnemo.git/commitdiff
Throw from worker if terminated.
authorChris Duncan <chris@zoso.dev>
Fri, 1 Aug 2025 14:37:01 +0000 (07:37 -0700)
committerChris Duncan <chris@zoso.dev>
Fri, 1 Aug 2025 14:37:01 +0000 (07:37 -0700)
src/lib/worker-queue.ts

index 6fe2bc6d00a7a9459788307b14561d47f9f2ad91..e2de7ebc0084a113064342c01e72cbc2a743eb5c 100644 (file)
@@ -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<T extends Data> (data: NamedData, enqueue: (task: Task) => number): Promise<NamedData<T>> {
                return new Promise(async (resolve, reject): Promise<void> => {
+                       if (this.#isTerminated) {
+                               reject('Worker terminated')
+                       }
                        const task: Task = {
                                id: performance.now(),
                                data,