我正在使用Emscripten系统将一堆C ++代码移植到Javascript。 C ++代码有许多调用fopen
,这是一个同步IO调用。在Emscripten中,我们使用对本地资源但是的XHR请求来模拟这一点,在Firefox同步XHR调用中(responseType
的{{1}}或blob
)是仅在Web-Worker中支持。转换所有c ++代码以适应异步IO代码似乎非常复杂,所以对于我的第一次尝试,我想看看我是否可以伪造同步XHR请求。
我最初的想法是主循环可以与web-worker共享一些状态,这可以进行同步io调用并在主循环暂停并等待web-worker完成时更新共享状态。免责声明:我知道这不是典型的Javascript方式,但我移植同步代码,而不是从头开始编写新代码(我肯定会使用异步IO)。
鉴于web-worker和主循环之间共享状态的限制,这个想法看起来站不住脚。
还有其他方法吗?
答案 0 :(得分:2)
所以在看到所有答案并做了一些自己的阅读之后,看起来最好的答案是:“你可以,但只能用于文本数据,你必须将其转换回二进制数据”。这很慢,但确实有效。
答案 1 :(得分:1)
您是否看过像qunit和sinon这样的测试库?我认为Jasmine也可以做到,但我知道sinon可以做到这一点