Gibt es eine Möglichkeit, eine synchrone XHR-Anfrage zu fälschen?

9

Ich portiere einen Stapel C ++ - Code mit dem Emscripten-System nach Javascript. Der C ++ Code hat viele Aufrufe von fopen , was ein synchroner IO-Aufruf ist. Innerhalb von Emscripten simulieren wir dies mithilfe einer XHR-Anforderung an eine lokale Ressource jedoch . Innerhalb von Firefox werden synchrone XHR-Aufrufe (mit responseType von blob oder arraybuffer ) nur innerhalb eines Web-Servers unterstützt. Arbeitnehmer. Die Konvertierung des gesamten C ++ - Codes zur Anpassung an asynchronen E / A-Code scheint sehr kompliziert zu sein. Daher möchte ich bei meinem ersten Versuch sehen, ob ich eine synchrone XHR-Anfrage fälschen kann.

Mein erster Gedanke war, dass die Hauptschleife einen Zustand mit einem Web-Mitarbeiter teilen könnte, der den synchronen io-Aufruf durchführen und den gemeinsamen Status aktualisieren könnte, während die Hauptschleife pausierte und darauf wartete, dass der Web-Mitarbeiter fertig war. HAFTUNGSAUSSCHLUSS: Ich weiß, dass dies nicht der typische Javascript-Weg ist, aber ich portiere synchronen Code, schreibe keinen neuen Code von Grund auf (in dem ich definitiv asynchrone IO verwendet hätte).

Angesichts der Beschränkungen für die Freigabe des Status zwischen einem Web-Worker und der Hauptschleife scheint diese Idee nicht vertretbar.

Gibt es andere Möglichkeiten, dies zu tun?

    
Michael Bishop 29.04.2013, 14:42
quelle

2 Antworten

2

Nachdem ich alle Antworten gesehen und einige eigene Lektüre gemacht habe, scheint die beste Antwort zu lauten: "Das geht, aber nur für Textdaten, und Sie müssen es wieder in Binärdaten umwandeln". Das ist langsam, funktioniert aber.

Ссылка

    
Michael Bishop 16.05.2013 14:52
quelle
1

Haben Sie Bibliotheken wie qunit und sinon getestet? Ich denke, dass Jasmine es vielleicht auch kann, aber ich weiß, dass sinon das tun kann

Ссылка

    
ChrisIPowell 07.05.2013 16:43
quelle