是否有某种方式来同步等待或在Web工人检查是否有新的消息?
我有一些代码(从emscripten LLVM编译),我可以不重构周围回调的大型复杂机构。
我需要确保代码之后一定行不执行,直到我接受和处理来自UI线程的消息。 如果我有一个while循环阻止,事件循环永远不会运行的,所以我不能接收消息。
是否有某种方式来同步等待或在Web工人检查是否有新的消息?
我有一些代码(从emscripten LLVM编译),我可以不重构周围回调的大型复杂机构。
我需要确保代码之后一定行不执行,直到我接受和处理来自UI线程的消息。 如果我有一个while循环阻止,事件循环永远不会运行的,所以我不能接收消息。
没有,很遗憾。 有添加一个方法来阻止从父页面的消息进行了一些讨论,但没有取得进展。 我去看看我能挖了相关的邮件列表线程。
你能打破序列如下而不重构?
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)
}
}
在onMessage事件将被阻塞,直到最初步骤执行堆栈是完整的,当,如果信息是可用的关键UI位才会推出。
粗黑客要做到这一点可能是使用同步API,如文件系统API,并使用临时文件作为一个同步机制。
在您的例子中,emscripten代码可以发出一个文件中读取同步,而UI线程写入相同的文件,有效地疏通工人。