У меня есть следующий скрипт, который выполняет функцию стиля с бесконечным прокруткой:
var next_page_link = $('.wp-pagenavi a:eq(-2)').attr('href');
$(window).scroll(function() {
if ($(window).scrollTop() > $(document).height() / 2) {
$.get(next_page_link, function(data){
if ($(data).find('.wp-pagenavi a:eq(-2)').attr('href') != next_page_link) {
next_page_link = $(data).find('.wp-pagenavi a:eq(-2)').attr('href');
var content = $(data).find('#multiple_product_top_container').html();
$('#multiple_product_top_container').append(content);
}
});
}
});
Одна из проблем, с которыми я столкнулся, заключается в том, что каждый раз, когда $.get
функция $.get
, браузер замерзает на 2-3 секунды или более и только размораживает, когда следующая страница полностью загружена.
Мой вопрос: возможно ли установить функцию $.get
для асинхронного запуска или какой-либо другой метод, который устранит замораживание?
Кстати, я знаю, что можно использовать скрипт на стороне сервера, но я столкнулся с множеством конфликтов, и это сложнее с большим количеством синтаксического анализа.
благодаря
Ответ на вопрос из комментария: How do я set it so that a new request can't happen until the old one finishes?
Вы используете семафор:
var semaphore = true;
var next_page_link = $('.wp-pagenavi a:eq(-2)').attr('href');
$(window).scroll(function() {
if ($(window).scrollTop() > $(document).height() / 2 && semaphore) {
semaphore = false;
$.get(next_page_link, function(data){
semaphore = true;
if ($(data).find('.wp-pagenavi a:eq(-2)').attr('href') != next_page_link) {
next_page_link = $(data).find('.wp-pagenavi a:eq(-2)').attr('href');
var content = $(data).find('#multiple_product_top_container').html();
$('#multiple_product_top_container').append(content);
}
});
}
});
Было бы неплохо добавить условие, чтобы новые запросы не возникали, когда вы уже получили все возможное для извлечения.
$.get
? Или нетерпеливый человек может вызвать это снова и снова?