Add ajaxQueue
This commit is contained in:
parent
22b6337752
commit
2da9c20c08
|
@ -0,0 +1,48 @@
|
||||||
|
// See https://github.com/gnarf/jquery-ajaxQueue for license and copyright
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
|
||||||
|
// jQuery on an empty object, we are going to use this as our Queue
|
||||||
|
var ajaxQueue = $({});
|
||||||
|
|
||||||
|
$.ajaxQueue = function( ajaxOpts ) {
|
||||||
|
var jqXHR,
|
||||||
|
dfd = $.Deferred(),
|
||||||
|
promise = dfd.promise();
|
||||||
|
|
||||||
|
// run the actual query
|
||||||
|
function doRequest( next ) {
|
||||||
|
jqXHR = $.ajax( ajaxOpts );
|
||||||
|
jqXHR.done( dfd.resolve )
|
||||||
|
.fail( dfd.reject )
|
||||||
|
.then( next, next );
|
||||||
|
}
|
||||||
|
|
||||||
|
// queue our ajax request
|
||||||
|
ajaxQueue.queue( doRequest );
|
||||||
|
|
||||||
|
// add the abort method
|
||||||
|
promise.abort = function( statusText ) {
|
||||||
|
|
||||||
|
// proxy abort to the jqXHR if it is active
|
||||||
|
if ( jqXHR ) {
|
||||||
|
return jqXHR.abort( statusText );
|
||||||
|
}
|
||||||
|
|
||||||
|
// if there wasn't already a jqXHR we need to remove from queue
|
||||||
|
var queue = ajaxQueue.queue(),
|
||||||
|
index = $.inArray( doRequest, queue );
|
||||||
|
|
||||||
|
if ( index > -1 ) {
|
||||||
|
queue.splice( index, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
// and then reject the deferred
|
||||||
|
dfd.rejectWith( ajaxOpts.context || ajaxOpts, [ promise, statusText, "" ] );
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
})(jQuery);
|
Loading…
Reference in New Issue