WebWorkerService
Manages Web Worker lifecycle — creation, typed message passing, status tracking, and cleanup — with an Observable-based API.
TypeScriptexample.ts
import { WebWorkerService } from '@angular-helpers/browser-web-apis'# Methods
| Method | Signature | Returns | Description |
|---|---|---|---|
createWorker | createWorker(name: string, scriptUrl: string): Observable<WorkerStatus> | Observable<WorkerStatus> | Create a worker. Idempotent: calling twice with the same name returns the existing entry without recreating the worker. Returns an `Observable` for backward compatibility. Prefer for new code. |
createWorkerSignal | createWorkerSignal(name: string, scriptUrl: string): Signal<WorkerStatus> | Signal<WorkerStatus> | Create a worker (signal-first). Returns the status signal; status is also accessible later via . |
terminateWorker | terminateWorker(name: string): void | void | Public method terminateWorker. |
terminateAllWorkers | terminateAllWorkers(): void | void | Public method terminateAllWorkers. |
postMessage | postMessage(workerName: string, task: WorkerTask): void | void | Send a fire-and-forget message. Use when you need a reply. |
request | request(workerName: string, type: string, data: TReq, opts?: WorkerRequestOptions): Promise<TRes> | Promise<TRes> | Send a message and await a correlated response. The worker MUST send back a message containing `correlationId` matching the request id. ```ts const result = await ws.request<{ ok: boolean }>('worker', 'compute', { n: 1 }); ``` |
getMessages | getMessages(workerName: string): Observable<WorkerMessage<T>> | Observable<WorkerMessage<T>> | Public method getMessages. |
getMessagesByType | getMessagesByType(workerName: string, type: string): Observable<WorkerMessage<T>> | Observable<WorkerMessage<T>> | Public method getMessagesByType. |
getStatus | getStatus(workerName: string): Observable<WorkerStatus> | Observable<WorkerStatus> | Public method getStatus. |
getStatusSignal | getStatusSignal(workerName: string): Signal<WorkerStatus> | Signal<WorkerStatus> | Public method getStatusSignal. |
getCurrentStatus | getCurrentStatus(workerName: string): WorkerStatus | undefined | WorkerStatus | undefined | Public method getCurrentStatus. |
getAllStatuses | getAllStatuses(): Map<string, WorkerStatus> | Map<string, WorkerStatus> | Public method getAllStatuses. |
isWorkerRunning | isWorkerRunning(workerName: string): boolean | boolean | Public method isWorkerRunning. |
getNativeWorker | getNativeWorker(name: string): Worker | undefined | Worker | undefined | Public method getNativeWorker. |
getAllWorkers | getAllWorkers(): Map<string, Worker> | Map<string, Worker> | Public method getAllWorkers. |