Knowing nothing about WebAssembly, I would guess it's because JS runs on a single thread.
Knowing nothing about WebAssembly, I would guess it's because JS runs on a single thread.
https://web.dev/workers-overview/#:~:text=Web%20workers%20an....
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers...
https://developer.mozilla.org/en-US/docs/Web/API/Service_Wor...
Whether or not workers are actually implemented as threads or processes in the runtime is irrelevant. As far as the JS code itself is concerned & what you can do with it, browser JS is lacking multi-threading. There's just no way to do a shared heap, and that is the biggest defining difference between a process and a thread.
Applications like Photoshop and Google Earth use ptheads on the Web so their compiled C++ is multithreaded, very similar to how it would run natively, and with similar responsiveness and throughput speedups. Though there are some limitations too, see