Maison  >  Article  >  interface Web  >  Comment exécuter séquentiellement des requêtes AJAX dans JQuery pour des performances optimales ?

Comment exécuter séquentiellement des requêtes AJAX dans JQuery pour des performances optimales ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-20 13:05:01837parcourir

How to Sequentially Execute AJAX Requests in JQuery for Optimal Performance?

Exécuter séquentiellement des requêtes AJAX

Dans le scénario où vous devez parcourir une collection et exécuter une requête AJAX pour chaque élément de manière séquentielle, en maintenant les performances du serveur et en évitant le gel du navigateur peut être un défi. Voici des approches innovantes pour résoudre ce problème :

jQuery 1.5 :

Utilisez le plugin $.ajaxQueue(), qui utilise les fonctions Deferred, queue() et $ Mécanismes .ajax(). Ce plugin gère la création d'une file d'attente de requêtes AJAX et fournit une promesse qui se résout une fois la requête terminée.

(function($) {

  // Create an empty object as the AJAX request queue
  var ajaxQueue = $({});

  $.ajaxQueue = function(ajaxOpts) {
    // Define the deferred object and its promise
    var dfd = $.Deferred(),
        promise = dfd.promise();

    // Enqueue the AJAX request
    ajaxQueue.queue(doRequest);

    // Add an abort method to the promise
    promise.abort = function(statusText) {
      // Abort the request if active
      if (jqXHR) {
        return jqXHR.abort(statusText);
      }

      // Remove the request from the queue
      var queue = ajaxQueue.queue(),
          index = $.inArray(doRequest, queue);
      if (index > -1) {
        queue.splice(index, 1);
      }

      // Reject the deferred
      dfd.rejectWith(ajaxOpts.context || ajaxOpts,
        [promise, statusText, ""]);

      return promise;
    };

    // Define the function to execute the request
    function doRequest(next) {
      jqXHR = $.ajax(ajaxOpts)
        .done(dfd.resolve)
        .fail(dfd.reject)
        .then(next, next);
    }

    return promise;
  };

})(jQuery);

jQuery 1.4 :

Si vous utilisez jQuery 1.4, vous peut exploiter la file d'attente d'animation sur un objet vide pour établir une « file d'attente » personnalisée pour les requêtes AJAX.

(function($) {
  // Create an empty object as the AJAX request queue
  var ajaxQueue = $({});

  $.ajaxQueue = function(ajaxOpts) {
    // Hold the original complete function
    var oldComplete = ajaxOpts.complete;

    // Enqueue the AJAX request
    ajaxQueue.queue(function(next) {
      // Define a complete callback to proceed with the queue
      ajaxOpts.complete = function() {
        // Execute the original complete function, if present
        if (oldComplete) oldComplete.apply(this, arguments);

        next(); // Proceed to the next request
      };

      // Execute the request
      $.ajax(ajaxOpts);
    });
  };

})(jQuery);

Exemple d'utilisation :

Avec ces techniques, vous pouvez séquencez les requêtes AJAX pour chaque élément d'une collection, garantissant ainsi les performances du serveur tout en évitant les blocages du navigateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn