簡體   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