50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
/*! jQuery Ajax Queue - v0.1.1 - 2013-01-16
|
|
* https://github.com/gnarf37/jquery-ajaxQueue
|
|
* Copyright (c) 2013 Corey Frang; Licensed MIT */
|
|
;(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 )
|
|
.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);
|