Created
June 21, 2011 23:52
-
-
Save gnarf/1039247 to your computer and use it in GitHub Desktop.
jQuery.ajaxQueue - A queue for ajax requests
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* jQuery.ajaxQueue - A queue for ajax requests | |
* | |
* (c) 2011 Corey Frang | |
* Dual licensed under the MIT and GPL licenses. | |
* | |
* Requires jQuery 1.5+ | |
*/ | |
(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(); | |
// 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; | |
}; | |
// run the actual query | |
function doRequest( next ) { | |
jqXHR = $.ajax( ajaxOpts ) | |
.done( dfd.resolve ) | |
.fail( dfd.reject ) | |
.then( next, next ); | |
} | |
return promise; | |
}; | |
})(jQuery); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* jQuery.ajaxQueue - A queue for ajax requests | |
* | |
* (c) 2011 Corey Frang | |
* Dual licensed under the MIT and GPL licenses. | |
* | |
* Requires jQuery 1.5+ | |
*/ | |
(function(a){var b=a({});a.ajaxQueue=function(c){function g(b){d=a.ajax(c).done(e.resolve).fail(e.reject).then(b,b)}var d,e=a.Deferred(),f=e.promise();b.queue(g),f.abort=function(h){if(d)return d.abort(h);var i=b.queue(),j=a.inArray(g,i);j>-1&&i.splice(j,1),e.rejectWith(c.context||c,[f,h,""]);return f};return f}})(jQuery) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://github.com/gnarf37/jquery-ajaxQueue