我有以下脚本,它执行“无限滚动”样式功能:
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/