代码之家  ›  专栏  ›  技术社区  ›  tcooc

jquery.ajax检查是否已经有另一个xhr

  •  0
  • tcooc  · 技术社区  · 15 年前

    我有一个页面,如果用户靠近页面底部,则加载下一个页面。

    我最近刚把它切换到jquery,现在使用 jQuery.ajax() 函数获取数据。但是,现在我无法检查XHR是否已经加载,使得页面在用户接近底部时加载多个XHR。

    我的听众是:

    $(document).scroll(function () {
                if(/* scrollbar is near bottom */)
                loadxhr(dat++); //function that calls jQuery.ajax()
            }
    });
    

    基本上,您可以在全局范围内跟踪呼叫的就绪状态吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Alex Martelli    15 年前

    我只需要一个变量(在函数之外)

    var scrolling = 0;
    

    当调用Ajax函数时,检查滚动是否等于0,否则什么也不做;如果等于1,则将其设置为1,调用Ajax函数,并在后者的回调中将其设置回0。

    有点像抢占式多线程系统中的“锁”,只是这里不需要锁(这也是好事,因为javascript没有锁;-),因为只有在调用Ajax函数时,控制线程才会中断,而不是在代码中的任意位置,如抢占式多线程中。

        2
  •  1
  •   Scott Evernden    15 年前

    也许退房 .ajaxStart() .ajaxStop() 在通话过程中会通知您的事件?