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