Javascript 可以在jQuery中使用半异步ajax调用吗?

Javascript 可以在jQuery中使用半异步ajax调用吗?,javascript,jquery,ajax,asynchronous,Javascript,Jquery,Ajax,Asynchronous,我在一个站点上工作,该站点涉及通过数组进行循环,对每个元素使用jqueryajax调用。以下是一个简化版本: var myArray=new Array("El1","El2","El3","El4"); for(var i=0; i<myArray.length; i++){ $.ajax({ url: 'page.php?param='+myArray[i], success: function(data){

我在一个站点上工作,该站点涉及通过数组进行循环,对每个元素使用jqueryajax调用。以下是一个简化版本:

var myArray=new Array("El1","El2","El3","El4");
for(var i=0; i<myArray.length; i++){
     $.ajax({
         url: 'page.php?param='+myArray[i],
         success: function(data){
               //doing stuff with the data
               //this needs to complete before the loop advances
         }
     });
 }
var myArray=新数组(“El1”、“El2”、“El3”、“El4”);
对于(var i=0;i
var idx=0;
var url=[“El1”、“El2”、“El3”、“El4”];
var doNextRequest=函数(){
$.ajax({
url:'page.php?param='+url[idx],
成功:功能(数据){
// ...
idx++;
if(idx
如果使用
数组,则不需要循环。shift

var myArray = new Array("El1", "El2", "El3", "El4");

function doRequest() {
    if (!myArray.length) return;
    var current = myArray.shift();
    $.ajax({
        url: 'page.php?param=' + current,
        success: function(data) {
            //doing stuff with the data
            doRequest();
        }
    });
}

调用上一个成功处理程序中的下一个请求。类似于这样的(可能是一个更优雅的构造)

var myArray=新数组(“El1”、“El2”、“El3”、“El4”);
var i=0;
函数callAjax()
{
$.ajax({
url:'page.php?param='+myArray[i],
成功:功能(数据){
//处理数据
//这需要在循环前进之前完成
if(i
请记住,这假设您在调用后不需要将项目保留在数组中,这取决于您的需要,可能是可取的或不可取的。是的。不幸的是,我确实需要保留数组,但是+1因为我喜欢这个数组的简单性,只需进行一次ajax调用。进行n次小ajax调用是低效的,因为hellRaynos有一个很好的point、 尽管您的业务逻辑可能需要其他方式。
var myArray = new Array("El1", "El2", "El3", "El4");

function doRequest() {
    if (!myArray.length) return;
    var current = myArray.shift();
    $.ajax({
        url: 'page.php?param=' + current,
        success: function(data) {
            //doing stuff with the data
            doRequest();
        }
    });
}
var myArray=new Array("El1","El2","El3","El4");
var i = 0;

function callAjax()
{
    $.ajax({
        url: 'page.php?param='+myArray[i],
        success: function(data){
            //doing stuff with the data
            //this needs to complete before the loop advances       

            if (i < myArray.length)
            {
                i++;
                callAjax();
            }
        }
    });
}