关于ajax缓存加队列的小功能,不太完善,请多多指教

先贴代码:

function ajaxCache(){
    // 请求结果缓存
    var cache = {}
    // 请求队列
    var queque = []
    // 请求状态
    var status = false

    return function (url,data,cb){
        var args = JSON.stringify(data)
        queque.push({
            url:url,
            data:data,
            callback:cb
        })

        var fn = function () {
            if(queque.length){
                var request = queque.shift()
                var params = request.data
                var reqUrl = request.url
                var reqCb = request.callback
                $.ajax({
                    type:"POST",
                    url: baseUrl + reqUrl,
                    data:params,
                    async:false,
                    dataType:'json',
                    success: function(ret){
                        cache[args] = ret
                        reqCb(ret)
                        status = false;
                        fn()
                    }
                });
            }

        }

        //console.log(cache)
        if(cache[args]){
            cb(cache[args])
        }else{
            if(!status){
                fn()
            }
        }
    }
}

使用方式:
var getAjaxData = ajaxCache()

你可能感兴趣的:(javascript,jquery)