«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как упорядочить запросы Ajax для оптимального управления?

Как упорядочить запросы Ajax для оптимального управления?

Опубликовано 3 ноября 2024 г.
Просматривать:488

How to Sequence Ajax Requests for Optimal Control?

Упорядочение запросов Ajax

При итерации по коллекции и выполнении отдельных вызовов Ajax для каждого элемента важно контролировать последовательность, чтобы предотвратить перегрузка сервера и зависание браузера. Хотя можно использовать собственные итераторы, существуют и более элегантные решения.

jQuery 1.5

В jQuery 1.5 и выше плагин $.ajaxQueue() использует $. .Deferred, $.queue() и $.ajax() для управления последовательностью запросов и предоставления обещания, которое выполняется после завершения запроса.

Реализация:

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;

};

})(jQuery);

jQuery 1.4

В jQuery 1.4 очередь анимации можно использовать для создания собственной «очереди». Вы также можете создать свой собственный плагин $.ajaxQueue(), который использует очередь jQuery 'fx' для автоматического инициирования первого запроса в очереди, если он еще не запущен.

Реализация:

var oldComplete = ajaxOpts.complete;

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

};

})(jQuery);

Пример:

url: '/echo/html/',
data: {html : "[" idx "] " $(this).html()},
type: 'POST',
success: function(data) {
  $("#output").append($("<li>", { html: data }));
}

});
});

Это гарантирует, что каждый запрос Ajax выполняется последовательно, что позволяет корректно обрабатывать нагрузку на сервер и поддерживать отзывчивость браузера. .

Заявление о выпуске Эта статья перепечатана по адресу: 1729396281. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3