Skip to content

Instantly share code, notes, and snippets.

@SansWord
Forked from gnarf/jQuery.ajaxQueue.min.js
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SansWord/9884758 to your computer and use it in GitHub Desktop.
Save SansWord/9884758 to your computer and use it in GitHub Desktop.
/*
* 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(url, ajaxOpts) {
if (ajaxOpts && typeof url === "string") {
ajaxOpts.url = url;
} else {
ajaxOpts = url;
}
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);
/*
* 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,d){function h(b){e=a.ajax(d).done(f.resolve).fail(f.reject).then(b,b)}d&&"string"==typeof c?d.url=c:d=c;var e,f=a.Deferred(),g=f.promise();return b.queue(h),g.abort=function(c){if(e)return e.abort(c);var i=b.queue(),j=a.inArray(h,i);return j>-1&&i.splice(j,1),f.rejectWith(d.context||d,[g,c,""]),g},g}}(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment