jquery Ajax Queue 隊列實現

有時候咱們須要按順序調用一組ajax,這些ajax須要有前後順序,相似於同步的ajax,那麼咱們能夠經過如下的方式來實現:javascript

(這個Ajax用到jQuery.post) html

 

//定義一個AJAX隊列
$.newAjaxQueue = function() {
    var queue = [],posting=false, fn = function() {
        if(queue.length){
            posting = true;
            var request = queue.shift();
            var url = request.url;
            var params = request.params;
            var callback = request.callback;
            if (typeof(params) === 'function') {
                callback = params;
                params = {};
            }
            $.post(url, params, function(response, status, xhr) {
                try{
                    if (typeof(callback) === 'function') {
                        callback(response);
                    }
                }finally{
                    fn();
                    posting = false;
                }
            }, 'text');
        }
    },instance = ({
        post: function(url,params,callback){
            queue.push({
                url:url,params:params,callback:callback
            });
            if(posting===false){
                fn();
            }
            return instance;
        }
    });
    return instance;
};

 

 

使用方法:java

首先建立一個Ajax隊列,而後爲這個Ajax隊列,添加須要執行的ajax操做(post操做),這些Ajax會按順序執行,一個執行完畢以後(得到返回值),再繼續執行下一個。ajax

$.newAjaxQueue().post( [URL] , [參數] ,[回調函數] ).post( [URL] , [參數] ,[回調函數] ).post( [URL] , [參數] ,[回調函數] );app

這個實現沒有考慮到超時等狀況,若是須要能夠本身添加。dom

 

 

 演示例子:函數

post

相關文章
相關標籤/搜索