jQuery.active

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

参考原地址:http://stackoverflow.com/questions/3148225/jquery-active-function

在看ajaxuploadfile组件原码的时候遇到的,不知道是什么东西,官方文档里也找不到,网上资料也很少,最后在这里找到点有用的,不过全是英文。

ajaxfileupload里的源代码(这个貌似jquery 的ajax源码里也有);

if ( s.global && ! jQuery.active++ )
{
	jQuery.event.trigger( "ajaxStart" );
}

This is a variable jQuery uses internally, but had no reason to hide, so it's there to use. Just a heads up, it becomes jquery.ajax.active next release. There's no documentation because it's exposed but not in the official API, lots of things are like this actually, like jQuery.cache (where all of jQuery.data() goes).

I'm guessing here by actual usage in the library, it seems to be there exclusively to support $.ajaxStart() and $.ajaxStop() (which I'll explain further), but they only care if it's 0 or not when a request starts or stops. But, since there's no reason to hide it, it's exposed to you can see the actual number of simultaneous AJAX requests currently going on.


When jQuery starts an AJAX request, this happens:

if ( s.global && ! jQuery.active++ ) {
  jQuery.event.trigger( "ajaxStart" );}

This is what causes the $.ajaxStart() event to fire, the number of connections just went from 0 to 1 (jQuery.active++ isn't 0 after this one, and !0 == true), this means the first of the current simultaneous requests started. The same thing happens at the other end. When an AJAX request stops (because of a beforeSend abort via return false or an ajax call complete function runs):

if ( s.global && ! --jQuery.active ) {
  jQuery.event.trigger( "ajaxStop" );}

This is what causes the $.ajaxStop() event to fire, the number of requests went down to 0, meaning the last simultaneous AJAX call finished. The other global AJAX handlers fire in there along the way as well.

看不懂的找度娘吧,这里就不秀本人捉急的英文了。

如果想进一步了解可以参考jQuery的ajax源码

 传送门:https://github.com/jquery/jquery/blob/master/src/ajax.js

转载于:https://my.oschina.net/u/912810/blog/308728

你可能感兴趣的:(javascript,python)