Improve error handling in workerSendReceive.
This commit is contained in:
+8
-2
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user