* `work()` function. See the documentation of those functions for details.
*/
export abstract class WorkerInterface {
+ static parentPort: any
/**
* Processes data through a worker.
*
* @returns Promise for processed data
*/
static async work (headers: Headers | null, data?: Data): Promise<any> {
+ NODE: this.parentPort = (await import('node:worker_threads')).parentPort
return new Promise(async (resolve, reject): Promise<void> => {
try {
let x, y = new ArrayBuffer(0)
* ```
*/
static listen (): void {
- addEventListener('message', (message: MessageEvent<any>): void => {
+ const listener = (message: MessageEvent<any>): void => {
const { name, headers, data } = message.data
if (name === 'STOP') {
close()
} else {
this.work(headers, data).then(this.report).catch(this.report)
}
- })
+ }
+ BROWSER: addEventListener('message', listener)
+ NODE: this.parentPort?.on('message', listener)
}
}