Я пытаюсь создать очередь вызовов ajax, которые будут выполняться по порядку.Кажется, все работает нормально, проблема в том, что если в каком-либо из вызовов произошла ошибка, я хочу, чтобы очередь остановилась после ошибки, поэтому оставшиеся вызовы ajax в очереди не выполняются.
Я вроденовичок в идее очереди jquery, я нашел этот код в Интернете для расширения jquery:
var ajaxQueue = $({});
(function($) {
$.ajaxQueue = function(ajaxOpts) {
// hold the original complete function
var oldComplete = ajaxOpts.complete;
// queue our ajax request
ajaxQueue.queue(function(next) {
// create a complete callback to fire the next event in the queue
ajaxOpts.complete = function() {
// fire the original complete if it was there
if (oldComplete) oldComplete.apply(this, arguments);
next(); // run the next query in the queue
};
// run the query
$.ajax(ajaxOpts);
});
};
// this is my addition, in an attempt to find ways to clear the queue
$.clearQueue = function(ajaxQueue) {
ajaxQueue.clearQueue();
ajaxQueue.stop();
};
})(jQuery);
Затем у меня есть эта функция, чтобы добавить элемент в очередь
function queueAjax( passObj, success, ajaxQueue ) {
$.ajaxQueue({
url: route() + 'global_fxns/ajaxHub',
async: true,
data: {'passme' : encodeURIComponent( JSON.stringify( passObj ) ) },
success: function(data) {
var aJSON = decodeURIComponent(data);
var retObj = $.parseJSON(aJSON);
// if there was no problem, call the success function that was passed
success( passObj, retObj );
},
error: function ( jqXHR, textStatus, errorThrown) {
clog("error");
// again this is my addition, trying to find ways to clear queue
ajaxQueue = $({});
$.clearQueue(ajaxQueue);
}
});
и, наконец,для вызова queueAjax:
var arr = standardAjaxArray( "testQueue", 0 );
var obj1 = {
arr: arr,
count: 1
};
function success( passObj, retObj, ajaxQueue ) {
clog("Queue success!");
}
queueAjax( obj1, success );
Проблема не в том, что я пытаюсь, я не могу освободить очередь, если в вызове ajax есть ошибка.Я намеренно помещаю сообщение об ошибке в сторону ajax PHP, затем вызываю queueAjax 4 раза, и он запускается 4 раза каждый раз.Как вы можете видеть, я попытался расширить jQuery с помощью $ .clearQueue, а также попытался передать очередь в качестве параметра в функцию ajax, но безуспешно.Любой вклад будет оценен.спасибо