Heim > Web-Frontend > js-Tutorial > Wie sequenziere ich Ajax-Anfragen für eine optimale Kontrolle?

Wie sequenziere ich Ajax-Anfragen für eine optimale Kontrolle?

Mary-Kate Olsen
Freigeben: 2024-10-20 12:32:02
Original
623 Leute haben es durchsucht

How to Sequence Ajax Requests for Optimal Control?

Sequenzierung von Ajax-Anfragen

Beim Durchlaufen einer Sammlung und beim Durchführen einzelner Ajax-Aufrufe für jedes Element ist es wichtig, die Reihenfolge zu steuern Verhindern Sie eine Serverüberlastung und ein Einfrieren des Browsers. Während benutzerdefinierte Iteratoren verwendet werden können, stehen elegantere Lösungen zur Verfügung.

jQuery 1.5

In jQuery 1.5 und höher das Plugin $.ajaxQueue() nutzt $.Deferred, $.queue() und $.ajax(), um die Anforderungssequenzierung zu verwalten und ein Versprechen bereitzustellen, das nach Abschluss der Anforderung aufgelöst wird.

Implementierung:

<br>(function($) {</p>
<p>var ajaxQueue = $({});</p>
<p>$.ajaxQueue = function( ajaxOpts ) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var jqXHR,
    dfd = $.Deferred(),
    promise = dfd.promise();

ajaxQueue.queue( doRequest );

promise.abort = function( statusText ) {
  if ( jqXHR ) {
    return jqXHR.abort( statusText );
  }
  var queue = ajaxQueue.queue(),
      index = $.inArray( doRequest, queue );
  if ( index > -1 ) {
    queue.splice( index, 1 );
  }
  dfd.rejectWith( ajaxOpts.context || ajaxOpts,
    [ promise, statusText, "" ] );
  return promise;
};

function doRequest( next ) {
  jqXHR = $.ajax( ajaxOpts )
    .done( dfd.resolve )
    .fail( dfd.reject )
    .then( next, next );
}

return promise;
Nach dem Login kopieren

};

})(jQuery);

jQuery 1.4

Für jQuery 1.4 kann die Animationswarteschlange zum Erstellen einer benutzerdefinierten „Warteschlange“ verwendet werden. Sie können auch Ihr eigenes $.ajaxQueue()-Plugin erstellen, das die „fx“-Warteschlange von jQuery verwendet, um automatisch die erste Anfrage in der Warteschlange zu initiieren, wenn diese nicht bereits ausgeführt wird.

Implementierung:

<br>(function($) {<br> var ajaxQueue = $({});</p>
<p>$.ajaxQueue = function(ajaxOpts) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var oldComplete = ajaxOpts.complete;

ajaxQueue.queue(function(next) {
  ajaxOpts.complete = function() {
    if (oldComplete) oldComplete.apply(this, arguments);
    next();
  };
  $.ajax(ajaxOpts);
});
Nach dem Login kopieren

};

})(jQuery);

Beispiel:

<br>$("#items li").each(function(idx) {<br> $.ajaxQueue({</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">url: '/echo/html/',
data: {html : "["+idx+"] "+$(this).html()},
type: 'POST',
success: function(data) {
  $("#output").append($("<li>", { html: data }));
}
Nach dem Login kopieren

});
});

Dadurch wird sichergestellt, dass jede Ajax-Anfrage nacheinander ausgeführt wird, was eine reibungslose Handhabung der Serverlast und die Beibehaltung der Reaktionsfähigkeit des Browsers ermöglicht.

Das obige ist der detaillierte Inhalt vonWie sequenziere ich Ajax-Anfragen für eine optimale Kontrolle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Vorheriger Artikel:Was verursacht inkonsistentes Verhalten in Console.log() von Google Chrome mit Arrays und Objekten? Nächster Artikel:Sind ES6-Klassen wirklich nur eine hübschere Version des prototypischen Musters von JavaScript?
Erklärung dieser Website
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
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage