我正在使用 Emscripten 系统将一堆 C++ 代码移植到 Javascript。C++ 代码有许多调用fopen
是同步 IO 调用。在 Emscripten 中,我们使用对本地资源的 XHR 请求来模拟这一点,但是,在 Firefox 中,同步 XHR 调用(带有responseType
ofblob
或arraybuffer
)仅在 Web-Worker 中支持。转换所有 c++ 代码以适应异步 IO 代码似乎非常复杂,所以对于我的第一次尝试,我想看看我是否可以伪造一个同步 XHR 请求。
我最初的想法是主循环可以与 web-worker 共享一些状态,这可以进行同步 io 调用并更新共享状态,而主循环暂停并等待 web-worker 完成。免责声明:我知道这不是典型的 Javascript 方式,但我正在移植同步代码,而不是从头开始编写新代码(我肯定会使用异步 IO)。
鉴于网络工作者和主循环之间共享状态的限制,这个想法看起来站不住脚。
还有其他方法可以做到这一点吗?