Wenn ich die JQuery-AJAX-Funktion verwende und die Antwort ziemlich groß ist ~ 1 MB, wird die UI erst eingefroren, bevor die Erfolgsfunktion aufgerufen wird. Ich habe das mit der JSON.parse-Funktion erlebt und eine große Menge an Daten analysiert. Ich glaube, dass diese Funktion bei der Rückgabe der Anfrage verwendet wird, um den Inhalt in JSON zu formatieren. Hier ist der Code, den ich verwende.
%Vor%Gibt es überhaupt eine Möglichkeit, den Code für die Antwort zu überschreiben, damit ich das Parsen in Teile staffeln und die Blockierung auf dem ui minimieren kann? oder gibt es einen anderen Weg, dies zu beheben. Ich benutze Chrom und Chrom Kanarienvogel und ich bekomme das gleiche Ergebnis in beiden.
Vielen Dank im Voraus
Die Vermutung ist, dass das Parsen einer riesigen JSON-Antwort die Verzögerung verursacht. Wenn das der Fall ist, haben Sie folgende Möglichkeiten:
Um das Parsen in mehrere Teile aufzuteilen, müssten Sie den jQuery-Ajax-Aufruf ändern, um nur den unformatierten Text zurückzugeben, und Sie müssten Ihren eigenen JSON-Parser erstellen, der die Arbeit in setTimeout()
so erledigen könnte dass die UI beim Parsen am Leben bleiben könnte. Dies wäre ein rechenbarer Arbeitsaufwand. Ich nehme an, Sie würden mit einem vorhandenen JSON-Parser beginnen und dann müssten Sie ihn ändern, um seinen Zustand so zu speichern, dass er in Blöcken funktionieren könnte.
Das Ändern der Schnittstelle zum Server, um Teile von JSON abzurufen, ist wahrscheinlich der einfachere Weg, das Problem zu lösen, wenn Sie die Schnittstelle zum Server entsprechend modifizieren können.
Für einige alternative Ideen, wie große Daten in Chunks verarbeitet werden können, sehen Sie Der beste Weg, um über ein Array zu iterieren, ohne die Benutzeroberfläche zu blockieren
Tags und Links javascript jquery json performance