Is there some way to synchronously wait for or check for a new message in a web-worker?
I have a large complicated body of code (compiled LLVM from emscripten) that I c
A crude hack to do this could be to use a synchronous API, such as the FileSystem API, and use a temporary file as a synchronising mechanism.
In your example, the emscripten code could issue a synchronous read on a file, while the UI thread writes to the same file, effectively unblocking the worker.
Can you break the sequence as follow without refactoring?
wrk.onmessage = function(e) {
if (e.data.step === 'initial input') {
doInitialWork(e.data.inputs)
} else if (e.data.step === 'ui input') {
doTheRest(e.data.uiData)
}
}
The onmessage event will be blocked until the initial step execution stack is complete and the critical ui bits will only launch when and if the info is available.
No, unfortunately. There was some discussion of adding a way to block on a message from the parent page, but it went nowhere. I'll see if I can dig up the relevant mailing list thread.