Jquery Ajax隊(duì)列是管理異步請(qǐng)求的一種技術(shù),通過(guò)將多個(gè)請(qǐng)求排隊(duì)并且一個(gè)個(gè)地執(zhí)行,可以避免發(fā)生交叉請(qǐng)求的問(wèn)題,保證請(qǐng)求的按序執(zhí)行,保證了數(shù)據(jù)的整潔性和操作的準(zhǔn)確性。下面是Jquery Ajax隊(duì)列的一些使用方法:
$.ajaxQueue = function(options){ var jqXHR, promise = $.Deferred(), chain = $.queue(ajaxQueue, function(){ if (options.requirement) { if (conditionMet()) { jqXHR = $.ajax(options).done(promise.resolve).fail(promise.reject); } else { promise.resolve(); // Early exit instead of finally... } } else { jqXHR = $.ajax(options).done(promise.resolve).fail(promise.reject); } }); function conditionMet(){ // Check condition return true; } chain.promise(jqXHR); return chain; } $.ajaxQueue({ requirement: true, url: '/someurl', type: 'POST' }).done(function(data){ console.log('success', data); }).fail(function(){ console.log('failed!', arguments); }).always(function(){ console.log('done!', arguments); }).then(function(jqXHR){ console.log('Deferred resolved!', arguments); }, function(jqXHR){ console.log('Deferred rejected!', arguments); }).promise();
以上代碼是一個(gè)非常基本的版本,可以通過(guò)不同的場(chǎng)景進(jìn)行擴(kuò)展,比如延遲,合并等等。Jquery Ajax隊(duì)列是一個(gè)非常好的解決異步請(qǐng)求問(wèn)題的技術(shù),只有在實(shí)際開(kāi)發(fā)中多多思考和使用,才能體會(huì)到它的魅力和優(yōu)越性。