由于某些奇怪的原因,下面的ajax函数被触发两次。 loadMoreResults();函数用于从服务器检索数据。我使用Google开发人员工具跟踪了发送到服务器的数据,该数据表明ajax请求已连续触发两次。我猜这发生在用户快速滚动时。

 //Executed when user has scrolled bottom of the page
$(window).scroll(function (e) {
 if ($(window).scrollTop() == $(document).height() - $(window).height()) {
    loadMoreResults();
 }
 });


关于如何防止这种情况的任何想法?
感谢您的帮助。

最佳答案

如您所说,这可能是因为用户滚动速度太快,并且文档无法使用新结果进行更新。

尝试使用一个标志,该标志将防止在函数仍在执行时调用loadMoreResults()

在函数启动时将其设置为true,最后在获得结果后将其设置为false。在将标志设置为loadMoreresults()之前,可以将标志的检查直接放在true函数的开头。

例如:

function loadMoreResults() {
  if (flag) return;
  flag = true;
[...]
  flag = false;
}

08-28 19:17