zoukankan      html  css  js  c++  java
  • jquery Ajax Queue 队列实现

    有时候我们需要按顺序调用一组ajax,这些ajax需要有先后顺序,类似于同步的ajax,那么我们可以通过以下的方式来实现:

    (这个Ajax用到jQuery.post) 

    //定义一个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;
    };

    使用方法:

    首先创建一个Ajax队列,然后为这个Ajax队列,添加需要执行的ajax操作(post操作),这些Ajax会按顺序执行,一个执行完毕之后(获得返回值),再继续执行下一个。

    $.newAjaxQueue().post( [URL] , [参数] ,[回调函数] ).post( [URL] , [参数] ,[回调函数] ).post( [URL] , [参数] ,[回调函数] );

    这个实现没有考虑到超时等情况,如果需要可以自己添加。

     演示例子:

  • 相关阅读:
    Moonlight, 我看行。
    传授犯罪方法罪
    Archos TV+ 1.8.07 照样“越狱”
    写这个月的回忆记,还真少不了学车那点儿事儿
    trigger()与triggerHandler()的不同
    移除不同的
    jq中的效果
    jquery中的文档操作之一addClass append attr
    jquery中的文档操作之四
    toggle方法
  • 原文地址:https://www.cnblogs.com/relucent/p/3317507.html
Copyright © 2011-2022 走看看