JS 要发起100个异步请求提交数据,有没有方案能分批次提交,比如每次处理5条,再发起下一批?

JavaScript017

JS 要发起100个异步请求提交数据,有没有方案能分批次提交,比如每次处理5条,再发起下一批?,第1张

用一个全局变量来统计正在发起的请求数量,比如说第一批发起五个异步请求,这个变量就设为5,然后在每个请求的回调函数中不管成功与否均把这个变量-1,如果变量为0,就说明5个请求均调用完毕了,这样就可以继续发起下一批5个请求,并把变量重新设为5……以此类推,直到全部完成

    //以post方式发送数据为例

    function chuFa() { //html元素事件触发的函数

        var myXMLHttpRequest = null

        if (window.ActiveXObject) {

            myXMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP")

        } else {

            myXMLHttpRequest = new XMLHttpRequest()

        }

        var url = "xxx.php"

        var data = "key=val" //val一般是从某个html元素中取出的value值

        myXMLHttpRequest.open("post", url, true)

        myXMLHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded")

        myXMLHttpRequest.onreadystatechange = function(){

            if (myXMLHttpRequest.readyState == 4 && myXMLHttpRequest.status == 200) {

                var res = myXMLHttpRequest.responseText

                var jsonObj = eval("("+res+")")

                //接下来就可以使用jsonObj这个json对象取出其中的属性值,做一些修改html元素value值等操作了。

            }        

        }

        myXMLHttpRequest.send(data)

    }

</script

我不是很明白楼主的用意!即是异步请求了怎么还能按队列依次加载?所谓一步就是你的程序和当前加载的另外一个程序不在一个队列上,如果你想要按队列依次加载,那么就用同步请求!JQuery ajax已经将这些封装的很好了,你可以直接去使用的!举个例子:

 $.ajax({

     type: "POST",               //请求方式(GET 或 POST)

     async: false,              //同步请求,默认为true即异步请求

     url: "...",                //请求地址

     data: {id : menuId},

     dataType: "html",

     success:function(data){   //请求成功后,调用的回调函数

         alert(data)          //服务器返回给前端的数据

     }

})

如果你对JQuery 不是很懂,下面的这个是JQuery中文API,希望对你有所帮助!链接:

http://www.css88.com/jqapi-1.9/jQuery.ajax/