fix: overriding self.postMessage should not impact worker_threads.parentPort (#10496)

* fix a bug in worker

* remove old
This commit is contained in:
dave caruso
2024-04-24 22:14:37 -07:00
committed by GitHub
parent 685dc02142
commit e792bbdf5f
10 changed files with 220 additions and 262 deletions

View File

@@ -0,0 +1,15 @@
import { isMainThread, parentPort, workerData } from "worker_threads";
if (parentPort === null) throw new Error("worker_threads.parentPort is null");
if (isMainThread) throw new Error("worker_threads.isMainThread is wrong");
Object.assign(global, {
postMessage: message => {
parentPort.postMessage(message);
},
});
parentPort.on("message", m => {
postMessage("Hello from worker!");
});

View File

@@ -176,3 +176,13 @@ test("receiveMessageOnPort works as FIFO", () => {
}).toThrow();
}
});
test("you can override globalThis.postMessage", async () => {
const worker = new Worker(new URL("./worker-override-postMessage.js", import.meta.url).href);
const message = await new Promise(resolve => {
worker.on("message", resolve);
worker.postMessage("Hello from worker!");
});
expect(message).toBe("Hello from worker!");
await worker.terminate();
});