in packages/utils/worker-manager/src/WorkerManager.ts [66:121]
private _initWorkers(workers: Worker[]) {
workers.forEach((worker) => {
worker.onmessage = (e) => {
const id = e.data[WORKER_ID_KEY]
if (id === undefined) {
console.error(
`Polaris::WorkerManager - '${WORKER_ID_KEY}' property lost in the returned message: `,
e.data,
e
)
return
}
const callbacks = this._callbackMap.get(id)
if (!callbacks) {
console.error(
`Polaris::WorkerManager - id: ${id} callbacks lost, this may be caused by disposing or other unexpected usage. `
)
return
}
if (e.data.error) {
callbacks.reject(e.data)
this._callbackMap.delete(id)
return
}
callbacks.resolve(e.data)
this._callbackMap.delete(id)
}
worker.onmessageerror = (e) => {
const id = e.data[WORKER_ID_KEY]
if (!id) {
console.error(
`Polaris::WorkerManager - '${WORKER_ID_KEY}' property lost in the returned message: `,
e.data,
e
)
return
}
const callbacks = this._callbackMap.get(id)
if (!callbacks) {
console.error(
`Polaris::WorkerManager - id: ${id} callbacks lost, this may be caused by disposing or other unexpected usage. `
)
return
}
callbacks.reject(e.data)
this._callbackMap.delete(id)
}
worker.onerror = (e) => {
console.error(`Polaris::WorkerManager - Worker error: `, e.message, e)
}
this._workers.push({
worker,
activeTasks: 0,
})
})
}