Alternativen für Javascript Synchronous XMLHttpRequest (als Zeitüberschreitung in Safari)

Kurzversion: Suchen Sie nach einer Methode, um auf eine Asynch XHR-Anfrage zu warten, oder nach einer Methode, um Synch XHR in Safari zum Laufen zu bringen.

Viel längere Version: Ich arbeite an einem Webdienst, der verschiedene externe Datenquellen verwendet, die zusammengeführt werden. Ich verwende ein Javacript-Frontend, das AJAX / XHR-Aufrufe an meinen PHP-Servercode durchführt. Es gibt keine standortübergreifenden Probleme, da der Client nur Daten von meinem Server anfordert (der Server stellt die externen Datenanforderungen).

Ich verwende eine synchrone XHR-Anforderung, da ich einige Nachbearbeitungen (Sortieren, Filtern usw.) an den Daten vornehmen muss, bevor sie auf dem Bildschirm angezeigt werden.

Dies alles funktioniert problemlos unter IE, FF und Opera, scheint jedoch ein Problem für Safari zu sein (ich habe Chrome noch nicht ausprobiert).

Wenn ich Firebug für Safari auf meinem Windows-Computer verwende, kann ich sehen, dass der Server einen Anruf getätigt hat, der nach mehr als 10 Sekunden fehlschlägt. Auf meinem iPad ist die Meldung etwas besser: NETWORK_ERR: XMLHttpRequest Ausnahme 101: Im synchronen Modus ist ein Netzwerkfehler aufgetreten.

Nachforschungen haben ergeben, dass Safari im Synchronisierungsmodus nach 10 Sekunden eine Zeitüberschreitung aufweist. Es scheint eine Zeitüberschreitungsfunktion zu geben, mit der Sie diese Zeitüberschreitungsfunktion erweitern können (mit einer Höchstgrenze für Safari von 60 Sekunden). Leider kann ich das nicht zum Laufen bringen.

Ich frage mich jetzt, was die Leute als beste Möglichkeit vorschlagen würden, dies durch Änderungen am Javacript-Code des Clients zu umgehen.

Die beiden Optionen, die ich denke, sind: (i) ein funktionierendes Beispiel für ein XHR-Zeitlimit für die Synchronisierung, das Safari-Browser berücksichtigen werden; oder (ii) eine Art Wrapper um einen asynchronen XHR-Aufruf haben, so dass die Nachladeverarbeitung zuerst auf das Laden wartet.

Ich bin kein besonders erfahrener Javascript-Hacker, aber ich habe eine ganze Menge für dieses Projekt eingerichtet. Ich habe weder JQuery noch andere Frameworks verwendet und würde es vorziehen, bei Raw-JS zu bleiben, nur um nicht die zusätzliche Syntax erlernen zu müssen. [Sie können meinen vorherigen Beiträgen entnehmen, dass ich in der Vergangenheit versucht habe, JQM und Spry zu verwenden, aber beide haben sich zumindest zu diesem Zeitpunkt als die falschen Entscheidungen erwiesen und sind seitdem vorerst vom Tisch gefallen].

Ich habe das Gefühl, dass ein Rückruf die richtige Option ist, um auf ein Asych zu warten, aber ich bin mir nicht sicher, wie dies funktioniert oder wie Sie es codieren würden.

Dies ist zu diesem Zeitpunkt nur ein Prototyp, dreckige Hacks sind also akzeptabel. Ein vollständiger Umschreibevorgang ist bereits geplant, sobald ich die Funktionalität bewiesen habe.

Schätzen Sie die Gedanken und Ratschläge der Menschen dazu.

Grüße, Pete.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage