jQuery $. get зависает при выполнении

0

У меня есть следующий скрипт, который выполняет функцию стиля с бесконечным прокруткой:

    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 для асинхронного запуска или какой-либо другой метод, который устранит замораживание?

Кстати, я знаю, что можно использовать скрипт на стороне сервера, но я столкнулся с множеством конфликтов, и это сложнее с большим количеством синтаксического анализа.

благодаря

  • 0
    $ .get асинхронный, должна быть проблема с вашим обратным вызовом
  • 0
    Ваш вызов на $.get ? Или нетерпеливый человек может вызвать это снова и снова?
Показать ещё 10 комментариев
Теги:
dom

1 ответ

3
Лучший ответ

Ответ на вопрос из комментария: 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);
                }
        });                 
    }
});

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

  • 0
    Это действительно отличная идея, работает отлично! Большое спасибо! : D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню