9

我使用Emscripten系統將一堆C++代碼移植到Javascript中。 C++代碼有很多調用fopen這是一個同步IO調用。在Emscripten中,我們使用XHR請求對本地資源進行模擬,但是在Firefox同步XHR調用中(responseTypeblobarraybuffer)僅在Web工作人員內部支持。轉換所有C++代碼以適應異步IO代碼看起來非常複雜,因此對於我的第一次嘗試,我想查看是否可以僞造一個同步XHR請求。有沒有辦法僞造一個同步XHR請求?

我最初的想法是,主循環可以與網絡工作者共享某種狀態,這可以在主循環暫停並等待網絡工作者完成時進行同步io調用並更新共享狀態。免責聲明:我知道這不是典型的Javascript方式,但我正在移植同步代碼,而不是從頭開始編寫新代碼(我肯定會使用異步IO)。

鑑於網絡工作者和主循環之間共享狀態的限制,這個想法看起來站不住腳。

是否有其他方法可以做到這一點?

+0

*「火狐同步XHR調用內只一個網絡工作者中支持」 *這肯定不健全的權利。 – 2013-04-29 14:48:47

+0

這是我得到這個信息: https://github.com/kripken/emscripten/wiki/Filesystem-Guide 「警告:Firefox和Chrome最近禁用同步二進制XHR時,這意味着這可不行「 – 2013-04-29 15:03:03

+2

@squint OP沒有解釋得很好(直到他的評論如上),但在MDN的[XHR頁面](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest) :「從Gecko 11.0開始...以及WebKit內部版本528,這些瀏覽器不再允許您在執行同步請求時使用'responseType'屬性。」這意味着你不能使用''arraybuffer''或''blob''的'responseType'獲取二進制數據;這正在完成(我假設)明確阻止以同步方式獲取(可能相當大的)二進制資源。 – apsillers 2013-04-29 15:20:04

回答

相關問題