如何判断 jQuery 是否有挂起的 ajax 请求
推荐于2016-09-22 · 知道合伙人软件行家
关注
展开全部
我有一个动作要执行:
Javascript |
copy code | ?
1 var function some_action() {
2 // ...
3 }
但是它需要在所有的 ajax 完成之后才触发,于是我这样写:
Javascript |
copy code | ?
1 $(document).one('ajaxStop', some_action);
这样的话就可以让这个函数等待所有的 ajax 完成之后再执行了。
但是,有些时候我执行这个的时候并没有 ajax 在跑,然后它就不会马上执行了。
这是个问题,因此我希望有一个方法可以判断现在 jQuery 的 ajax 队列里面还有没有没完成的请求,大概会是这个样子来用:
Javascript |
copy code | ?
1 if($.hasAjaxRunning()) {
2 $(document).one('ajaxStop', some_action);
3 } else {
4 some_action();
5 }
同样的问题可以看对应的 stackoverflow 问题。
解决方案:
我们可以手动写一个全局变量来设一个 flag 来判断:
Javascript |
copy code | ?
01 // site.js
02 $(function() {
03 window.ajax_loading = false;
04 $.hasAjaxRunning = function() {
05 return window.ajax_loading;
06 };
07 $(document).ajaxStart(function() {
08 window.ajax_loading = true;
09 });
10 $(document).ajaxStop(function() {
11 window.ajax_loading = false;
12 });
13 });
这样就 KO 了,还算优美。
Javascript |
copy code | ?
1 var function some_action() {
2 // ...
3 }
但是它需要在所有的 ajax 完成之后才触发,于是我这样写:
Javascript |
copy code | ?
1 $(document).one('ajaxStop', some_action);
这样的话就可以让这个函数等待所有的 ajax 完成之后再执行了。
但是,有些时候我执行这个的时候并没有 ajax 在跑,然后它就不会马上执行了。
这是个问题,因此我希望有一个方法可以判断现在 jQuery 的 ajax 队列里面还有没有没完成的请求,大概会是这个样子来用:
Javascript |
copy code | ?
1 if($.hasAjaxRunning()) {
2 $(document).one('ajaxStop', some_action);
3 } else {
4 some_action();
5 }
同样的问题可以看对应的 stackoverflow 问题。
解决方案:
我们可以手动写一个全局变量来设一个 flag 来判断:
Javascript |
copy code | ?
01 // site.js
02 $(function() {
03 window.ajax_loading = false;
04 $.hasAjaxRunning = function() {
05 return window.ajax_loading;
06 };
07 $(document).ajaxStart(function() {
08 window.ajax_loading = true;
09 });
10 $(document).ajaxStop(function() {
11 window.ajax_loading = false;
12 });
13 });
这样就 KO 了,还算优美。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询