PageSourceSearch

https://www.fund001.com/web2015/js/jquery.ajaxqueue.js

js fund001.com collected 2026-10-04 12:32:18 UTC 2,934 bytes, 116 lines download raw bytes

1/**
2 * Ajax Queue Plugin
3 * 
4 * Homepage: http://jquery.com/plugins/project/ajaxqueue
5 * Documentation: http://docs.jquery.com/AjaxQueue
6 */
7
8/**
9
10<script>
11$(function(){
12	jQuery.ajaxQueue({
13		url: "test.php",
14		success: function(html){ jQuery("ul").append(html); }
15	});
16	jQuery.ajaxQueue({
17		url: "test.php",
18		success: function(html){ jQuery("ul").append(html); }
19	});
20	jQuery.ajaxSync({
21		url: "test.php",
22		success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
23	});
24	jQuery.ajaxSync({
25		url: "test.php",
26		success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
27	});
28});
29</script>
30<ul style="position: absolute; top: 5px; right: 5px;"></ul>
31
32 */
33/*
34 * Queued Ajax requests.
35 * A new Ajax request won't be started until the previous queued 
36 * request has finished.
37 */
38
39/*
40 * Synced Ajax requests.
41 * The Ajax request will happen as soon as you call this method, but
42 * the callbacks (success/error/complete) won't fire until all previous
43 * synced requests have been completed.
44 */
45
46
47(function($) {
48	
49	var ajax = $.ajax;
50	
51	var pendingRequests = {};
52	
53	var synced = [];
54	var syncedData = [];
55	
56	$.ajax = function(settings) {
57		// create settings for compatibility with ajaxSetup
58		settings = jQuery.extend(settings, jQuery.extend({}, jQuery.ajaxSettings, settings));
59		
60		var port = settings.port;
61		
62		switch(settings.mode) {
63		case "abort": 
64			if ( pendingRequests[port] ) {
65				pendingRequests[port].abort();
66			}
67			return pendingRequests[port] = ajax.apply(this, arguments);
68		case "queue": 
69			var _old = settings.complete;
70			settings.complete = function(){
71				if ( _old )
72					_old.apply( this, arguments );
73				jQuery([ajax]).dequeue("ajax" + port );;
74			};
75		
76			jQuery([ ajax ]).queue("ajax" + port, function(){
77				ajax( settings );
78			});
79			return;
80		case "sync":
81			var pos = synced.length;
82	
83			synced[ pos ] = {
84				error: settings.error,
85				success: settings.success,
86				complete: settings.complete,
87				done: false
88			};
89		
90			syncedData[ pos ] = {
91				error: [],
92				success: [],
93				complete: []
94			};
95		
96			settings.error = function(){ syncedData[ pos ].error = arguments; };
97			settings.success = function(){ syncedData[ pos ].success = arguments; };
98			settings.complete = function(){
99				syncedData[ pos ].complete = arguments;
100				synced[ pos ].done = true;
101		
102				if ( pos == 0 || !synced[ pos-1 ] )
103					for ( var i = pos; i < synced.length && synced[i].done; i++ ) {
104						if ( synced[i].error ) synced[i].error.apply( jQuery, syncedData[i].error );
105						if ( synced[i].success ) synced[i].success.apply( jQuery, syncedData[i].success );
106						if ( synced[i].complete ) synced[i].complete.apply( jQuery, syncedData[i].complete );
107		
108						synced[i] = null;
109						syncedData[i] = null;
110					}
111			};
112		}
113		return ajax.apply(this, arguments);
114	};
115	
116})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.