Improve error handling in workerSendReceive.

This commit is contained in:
Juliusz Chroboczek
2025-08-10 16:24:06 +02:00
parent c782102567
commit 49dd875ad7
+8 -2
View File
@@ -1283,6 +1283,8 @@ async function setFilter(c) {
* @param {any[]} [transfer] * @param {any[]} [transfer]
*/ */
async function workerSendReceive(worker, message, transfer) { async function workerSendReceive(worker, message, transfer) {
if(worker.onmessage)
throw new Error("worker busy");
let p = new Promise((resolve, reject) => { let p = new Promise((resolve, reject) => {
worker.onmessage = e => { worker.onmessage = e => {
if(e && e.data) { if(e && e.data) {
@@ -1295,8 +1297,12 @@ async function workerSendReceive(worker, message, transfer) {
} }
}; };
}); });
worker.postMessage(message, transfer); try {
return await p worker.postMessage(message, transfer);
return await p
} finally {
worker.onmessage = null;
}
} }
/** /**