- worker.on('message', (message: WorkerMessage<WorkerData>) => {
- if (message.event === WorkerMessageEvents.startedWorkerElement) {
- this.emitter?.emit(WorkerSetEvents.elementStarted, this.info)
- } else if (message.event === WorkerMessageEvents.startWorkerElementError) {
- this.emitter?.emit(WorkerSetEvents.elementError, message.data)
+ worker.on('message', (message: WorkerMessage<R>) => {
+ const { uuid, event, data } = message
+ if (this.promiseResponseMap.has(uuid)) {
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const { resolve, reject, workerSetElement } = this.promiseResponseMap.get(uuid)!
+ if (event === WorkerMessageEvents.addedWorkerElement) {
+ this.emitter?.emit(WorkerSetEvents.elementAdded, this.info)
+ workerSetElement.numberOfWorkerElements++
+ resolve(data)
+ } else if (event === WorkerMessageEvents.workerElementError) {
+ this.emitter?.emit(WorkerSetEvents.elementError, data)
+ reject(data)
+ }
+ this.promiseResponseMap.delete(message.uuid)