javascript - jQuery $.get 在执行时卡住

标签 javascript jquery dom

我有以下脚本,它执行“无限滚动”样式功能:

    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 函数时,浏览器都会卡住 2-3 秒或更长时间,并且只有在下一页打开时才会解除卡住。完全加载。

我的问题是,是否可以将 $.get 函数设置为异步运行或使用其他方法来消除卡住?

顺便说一句,我知道可以使用服务器端脚本,但我遇到了很多冲突,而且它更复杂,涉及更多解析。

谢谢

最佳答案

评论中问题的答案:如何设置,以便在旧请求完成之前不会发生新请求?

您使用 semaphore :

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);
                }
        });                 
    }
});

最好添加一个条件,即当您已经检索到所有可能检索的内容时,不得发出新请求。

关于javascript - jQuery $.get 在执行时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22757422/

相关文章:

javascript - 当我单击它们然后将该数据传递到我的变量时如何获取特定树节点的 ID

javascript - 如何更改页面中的所有链接?

javascript - 滑入菜单需要切换汉堡包选项

javascript - 同时解构和传入完整对象

jquery - 从打开的页面隐藏 iframe

javascript - 如何在 fullCalendar 中绑定(bind)日期?

javascript - Angular : Detect click event inside a div with ngFor inside

javascript - 表单组件.html :8 ERROR TypeError: Cannot read property 'userName' of undefined

jquery - jQuery 弹出窗口中的 WordPress 登录 - 如何使用 jQuery Ajax 验证登录?

javascript - 如何在单击单选按钮时更改输入文件的 "accept"值