jQuery $.get 冻结执行
jQuery $.get freezing on execute
我有以下脚本执行"无限滚动"样式的功能:
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
函数设置为异步运行或其他可以消除冻结的方法?
顺便说一句,我知道可以使用服务器端脚本,但我遇到了很多冲突,而且涉及更多解析会更复杂。
谢谢
评论中问题的答案:How do I 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);
}
});
}
});
最好添加一个条件,即当您已经检索到所有可能检索的内容时,不会发出新的请求。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 在哪里使用名为“;冻结”;
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 仅限Chrome:ajax冻结了我的JavaScript执行
- 如何在不冻结浏览器的情况下执行大量javascript代码
- 执行流星重置时,登录用户的应用程序页面冻结
- 为什么在执行许多ajax请求时浏览器会冻结
- Internet Explorer在执行鼠标单击+拖动操作时冻结.如何检测其原因
- 加载 gif 会在代码执行时“冻结”
- jQuery $.get 冻结执行