繁体   English   中英

有没有办法伪造同步XHR请求?

[英]Is there a way to fake a synchronous XHR request?

我正在使用Emscripten系统将一堆C ++代码移植到Javascript。 C ++代码对fopen有很多调用,这是一个同步IO调用。 在Emscripten,我们模拟这种使用XHR请求本地资源不过 ,Firefox同步XHR调用内(用responseTypeblobarraybuffer )仅一个网络工作者中支持。 转换所有c ++代码以适应异步IO代码似乎非常复杂,所以对于我的第一次尝试,我想看看我是否可以伪造同步XHR请求。

我最初的想法是,主循环可以与web-worker共享一些状态,这可以进行同步io调用并在主循环暂停并等待web-worker完成时更新共享状态。 免责声明:我知道这不是典型的Javascript方式,但我正在移植同步代码,而不是从头开始编写新代码(我肯定会使用异步IO)。

鉴于web-worker和main-loop之间共享状态的限制,这个想法看起来站不住脚。

还有其他方法吗?

因此,在看到所有答案并做了一些自己的阅读之后,看起来最好的答案是:“你可以,但只能用于文本数据,你必须将其转换回二进制数据”。 这很慢,但确实有效。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FSending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers

你有没有看过像qunit和sinon这样的测试库? 我认为Jasmine也可以做到,但我知道sinon可以做到这一点

http://sinonjs.org/docs/#server

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM