Wie mache ich Ajax-Anrufe in Intervallen ohne Überlappung?

8

Ich möchte eine Webseite einrichten, die Daten über AJAX-Aufrufe von einem eingebetteten Webserver abfragt. Wie würde ich den Code so einrichten, dass sich eine Anfrage nicht überschneidet? Ich sollte erwähnen, ich habe sehr wenig JavaScript-Erfahrung und auch ein zwingender Grund, keine externen Bibliotheken jeder Größe größer als vielleicht 10 oder so Kilobyte zu verwenden.

    
The Altruist 18.12.2009, 22:12
quelle

3 Antworten

6

Sie sollten die Möglichkeit in Betracht ziehen, Ihre AJAX-Anfrage NUR nach einer erfolgreichen Antwort vom vorherigen AJAX-Anruf neu zu starten.

%Vor%

In diesem Beispiel wird ExtJS verwendet, aber Sie können sehr einfach nur XMLHttpRequest verwenden.

HINWEIS: Wenn Sie ein genaues Intervall von x Sekunden benötigen, müssen Sie die Zeit verfolgen, die zwischen dem Start der AJAX-Anfrage und dem Start der AJAX-Anfrage verging setTimeout() call, und subtrahieren Sie dann diese Zeitspanne von der Verzögerung. Andernfalls variiert die Intervallzeit im obigen Beispiel mit der Netzwerklatenz und mit der Zeit für die Verarbeitung der Webservice-Logik.

    
Daniel Vassallo 18.12.2009 23:32
quelle
1

AJAX muss trotz des Namens nicht asynchron sein.

Hier ist die asynchrone Methode ...

%Vor%

... aber hier ist ein synchrones Äquivalent ...

%Vor%

... und hier ist eine typische Aktion ...

%Vor%     
dacracot 18.12.2009 22:20
quelle
0

Ich schlage vor, dass Sie ein kleines Toolkit wie jx.js ( Quelle ) verwenden. Sie können es hier finden: Ссылка (weniger als 1k verkleinert)

So richten Sie eine Anfrage ein:

%Vor%

Um es in einem Intervall einzurichten, können Sie setInterval und eine Variable verwenden, um zu speichern, ob eine Anfrage gerade stattfindet oder nicht - wenn ja, tun wir einfach nichts:

%Vor%     
James 18.12.2009 22:22
quelle