Heim  >  Artikel  >  Web-Frontend  >  So lösen Sie mehrere Ajax-Seitenanfragen und Blockierungsprobleme beim Laden von Seiten

So lösen Sie mehrere Ajax-Seitenanfragen und Blockierungsprobleme beim Laden von Seiten

一个新手
一个新手Original
2017-10-16 09:31:052589Durchsuche

Ich bin im Projekt auf mehrere Ajax-Ladevorgänge gestoßen, es gab ein Problem beim Laden und es konnte nicht beim ersten Mal geladen werden.

Der Hauptgrund ist, dass der Rendering-Thread (UI) des Browsers und der JS-Thread sich gegenseitig ausschließen. Wenn zeitaufwändige JS-Vorgänge ausgeführt werden, wird das Rendern von Seiten blockiert. Es gibt kein Problem, wenn wir asynchrones Ajax ausführen, aber wenn es auf eine synchrone Anforderung eingestellt ist, werden andere Aktionen (der Code hinter der Ajax-Funktion und der Rendering-Thread) gestoppt. Selbst wenn meine DOM-Operationsanweisung im Satz steht, bevor die Anforderung initiiert wird, blockiert diese Synchronisierungsanforderung den UI-Thread „schnell“, ohne ihm Zeit zur Ausführung zu geben. Aus diesem Grund schlägt der Code fehl.

1. Schreiben Sie die Synchronisierung in eine asynchrone um und verschachteln Sie mehrere Ajax-Anfragen. Rufen Sie nach Erfolg eine weitere Ajax-Anfrage auf, damit das Laden der zweiten Anfrage nicht blockiert wird, da die erste Anfrage zuerst endet.

2. Es verwendet das Deferred-Objekt von jQuery. Nach der jQuery-Version 1.5 wurde das Deferred-Objekt eingeführt, das eine sehr praktische Funktion bietet Verallgemeinerung Asynchroner Mechanismus.

3. Verwenden Sie die Timer-Funktion setTimeout() oder setinterval(), um regelmäßig zu überprüfen, ob Ajax erfolgreich zurückkehrt.

Das obige ist der detaillierte Inhalt vonSo lösen Sie mehrere Ajax-Seitenanfragen und Blockierungsprobleme beim Laden von Seiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Wie schreibe ich SQL in jsNächster Artikel:Wie schreibe ich SQL in js