Javascript jQuery$。执行时冻结
我有以下执行“无限滚动”样式功能的脚本:Javascript jQuery$。执行时冻结,javascript,jquery,dom,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){
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
函数设置为异步运行,或者使用其他方法来消除冻结
顺便说一句,我知道使用服务器端脚本是可能的,但我遇到了很多冲突,涉及到更多的解析更复杂
感谢对评论中问题的回答:
我如何设置它,以便在旧请求完成之前新请求不会发生?
您可以使用:
添加一个条件是一个好主意,即当您已经检索到所有可以检索的内容时,不允许发出新请求。对注释中问题的回答:
如何设置它,以便在旧请求完成之前不能发出新请求?
您可以使用:
添加一个条件是一个好主意,即当您已经检索到所有可以检索的内容时,不允许发出新请求。对注释中问题的回答:
如何设置它,以便在旧请求完成之前不能发出新请求?
您可以使用:
添加一个条件是一个好主意,即当您已经检索到所有可以检索的内容时,不允许发出新请求。对注释中问题的回答:
如何设置它,以便在旧请求完成之前不能发出新请求?
您可以使用:
最好添加一个条件,即当您已检索到所有可能检索的内容时,不进行新请求。$。get是异步的,这一定是回调有问题。您对
$的调用是否已取消?或者一个不耐烦的人能一次又一次地触发它吗?@Paul'debounced'?我以前从未遇到过这种情况。你能解释一下它的作用吗?ThanksMetimes将代码包装在setTimeout(fn,0)中代码>帮助。它实际上在许多js库中使用。问题可能是所有的AJAX请求都在轰炸服务器,因为每个滚动都会创建一个新的请求(查看Chrome中的“网络”选项卡以了解我的意思)。添加一个条件,即在旧请求完成之前,新请求不能发生。$get是异步的,您的回调一定有问题。$您对$的调用是否取消了?或者一个不耐烦的人能一次又一次地触发它吗?@Paul'debounced'?我以前从未遇到过这种情况。你能解释一下它的作用吗?ThanksMetimes将代码包装在setTimeout(fn,0)中代码>帮助。它实际上在许多js库中使用。问题可能是所有的AJAX请求都在轰炸服务器,因为每个滚动都会创建一个新的请求(查看Chrome中的“网络”选项卡以了解我的意思)。添加一个条件,即在旧请求完成之前,新请求不能发生。$get是异步的,您的回调一定有问题。$您对$的调用是否取消了?或者一个不耐烦的人能一次又一次地触发它吗?@Paul'debounced'?我以前从未遇到过这种情况。你能解释一下它的作用吗?ThanksMetimes将代码包装在setTimeout(fn,0)中代码>帮助。它实际上在许多js库中使用。问题可能是所有的AJAX请求都在轰炸服务器,因为每个滚动都会创建一个新的请求(查看Chrome中的“网络”选项卡以了解我的意思)。添加一个条件,即在旧请求完成之前,新请求不能发生。$get是异步的,您的回调一定有问题。$您对$的调用是否取消了?或者一个不耐烦的人能一次又一次地触发它吗?@Paul'debounced'?我以前从未遇到过这种情况。你能解释一下它的作用吗?ThanksMetimes将代码包装在setTimeout(fn,0)中代码>帮助。它实际上在许多js库中使用。问题可能是所有的AJAX请求都在轰炸服务器,因为每个滚动都会创建一个新的请求(查看Chrome中的“网络”选项卡以了解我的意思)。添加一个条件,新的请求在旧的请求完成之前不能发生。这是一个非常好的主意,非常好用!非常感谢这是一个非常好的主意,非常好用!非常感谢这是一个非常好的主意,非常好用!非常感谢这是一个非常好的主意,非常好用!非常感谢D
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);
}
});
}
});