jquer의ajaxQueue 간단한 구현 코드

1795 단어
복잡한 것은 없습니다. 바로array 대상을 대기열로 삼아 aax 요청의 순서를 유지하는 것입니다.코드는 다음과 같습니다.
 
  
;(function($) {
$.ajaxQueue = {
// ajax
requests: new Array(),
// ajax
offer: function(options) {
var _self = this,
// complete,beforeSend “ ”, poll
xhrOptions = $.extend({}, options, {
// ,
complete: function(jqXHR, textStatus) {
if(options.complete)
options.complete.call(this, jqXHR, textStatus);
_self.poll();
},
// ,
beforeSend: function(jqXHR, settings) {
if(options.beforeSend)
var ret = options.beforeSend.call(this, jqXHR, settings);
if(ret === false) {
_self.poll();
return ret;
}
}
});
this.requests.push(xhrOptions);
if(this.requests.length == 1) {
$.ajax(xhrOptions);
}
},
// FIFO ajax
poll: function() {
if(this.isEmpty()) {
return null;
}
var processedRequest = this.requests.shift();
var nextRequest = this.peek();
if(nextRequest != null) {
$.ajax(nextRequest);
}
return processedRequest;
},
// ajax
peek: function() {
if(this.isEmpty()) {
return null;
}
var nextRequest = this.requests[0];
return nextRequest;
},
//
isEmpty: function() {
return this.requests.length == 0;
}
}
})(jQuery);

사용하면 $입니다.ajaxQueue.offer (settings), settings 설정은 jQuery 문서와 일치합니다.관심 있으시면 제 jsFiddle share를 클릭하여 온라인 실행, 수정 등을 할 수 있습니다.마지막으로 질문이 있으시면 소통을 환영합니다:)

좋은 웹페이지 즐겨찾기