UNPKG

vtex.js

Version:
45 lines (41 loc) 1.18 kB
(function() { var AjaxQueue; AjaxQueue = function(ajax) { var theQueue; theQueue = $({}); return function(ajaxOpts) { var abortFunction, dfd, jqXHR, promise, requestFunction; jqXHR = void 0; dfd = $.Deferred(); promise = dfd.promise(); requestFunction = function(next) { jqXHR = ajax(ajaxOpts); if (jqXHR.retry) { jqXHR.retry({ times: 2, statusCodes: [500, 503] }); } return jqXHR.done(dfd.resolve).fail(dfd.reject).then(next, next); }; abortFunction = function(statusText) { var index, queue; if (jqXHR) { return jqXHR.abort(statusText); } else { queue = theQueue.queue(); index = [].indexOf.call(queue, requestFunction); if (index > -1) { queue.splice(index, 1); } dfd.rejectWith(ajaxOpts.context || ajaxOpts, [promise, statusText, ""]); return promise; } }; theQueue.queue(requestFunction); promise.abort = abortFunction; return promise; }; }; window.AjaxQueue = AjaxQueue; }).call(this);