javascript - 如何停止监听事件直到ajax请求完成

标签 javascript jquery

我正在创建一个“滚动到底部”新闻源,当用户滚动到页面底部时,该新闻源会填充新闻。

我有以下代码(通过 Check if a user has scrolled to the bottom ):

$(window).scroll(function() {
   if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
       //Ajax Request
   }
});

如何确保用户在完成 ajax 请求填充新闻之前不会向上滚动然后再次向下滚动。换句话说,有什么干净的方法可以暂停它,直到 ajax 请求完成并填充其结果

最佳答案

类似这样的事情:

var request_pending = false;

function at_bottom_of_page() {
    return $(window).scrollTop() + $(window).height() > $(document).height() - 100;
}

$(window).scroll(function() {
    if (request_pending) {
        return;
    }               
    if (at_bottom_of_page()) {
        request_pending = true;
        doAjax(function (moar_news) {
            render_news(moar_news);
            request_pending = false;
        });
    }
});

关于javascript - 如何停止监听事件直到ajax请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162092/

相关文章:

javascript - 背景图像与滚动内容一起移动

javascript - 如何在 FuelUX 向导的第 1 步禁用下一步按钮

jquery - 如何检查两个元素/div 是否属于同一个父元素?

javascript - 用于转换网页上显示的时间时区的用户脚本?

javascript - Bootstrap v4 传送带未初始化

更改 Div 样式的 Javascript 函数

javascript - 按键时滚动到元素

javascript - React Native 某些样式导致 View 无法渲染

javascript - 从多个实例点击切换类

javascript - .velocity ("scroll") 如果在 $window.scroll() 函数中使用则无法正常工作