0

我需要调用这个帖子函数 n 次

$.post("prova.php", { myparameter:p1 }, 
    function(msg){ 
       alert('ok')
    }
);

所以像这样循环它:

for(i=0;i<myArray.length;i++){
   $.post("prova.php", { myparameter:p1 }, 
        function(msg){ 
           updateUI();
        }
    );
}

当第一个仍然处于活动状态时,我如何停止其他 myArray.length -2 $.post?我希望我的问题很清楚..谢谢!

4

2 回答 2

3

你能试试吗

var x = myArray.length;  // n times you want 

function Send (){
  if (x > 0){
     $.post("prova.php", { myparameter:p1 }, 
        function(msg){ 
          x -= 1 ;
          Send();      
        }
     );
  }
}

更新多 合一功能

var x = myArray.length; // 你想要的 n 次

function Send (x){
  if (x > 0){
     $.post("prova.php", { myparameter:p1 }, 
        function(msg){ 
          x -= 1 ;
          Send(x);      
        }
     );
  }
}

 function beforeSend(){
    var x = myArray.length;  // n times you want 
    Send (x);
 }
于 2012-05-24T12:39:06.507 回答
2

我认为您的意思是您不想最终$.post同时调用请求,并且您想等到最后一个完成后再进行下一个。

您可以以丑陋的方式做到这一点,而无需任何外部库执行以下操作:

<script src="text/javascript">
var count = 0;

function doRequest()
{
    if (count >= myArray.length)
        return null;

    $.post('prova.php', { myparameter: p1 }, function(msg)
    {
        updateUI();
        count++;
        doRequest();
    });
}

doRequest();
</script>

或者你可以使用我最喜欢的 JavaScript 库之一,async。这使您可以编写更理智、更容易理解的代码,并执行以下操作:

<script type="text/javascript">
var count = 0;
async.whilst(function() //test function, stop running when this is return false
{
    return count < myArray.length;
},
function(callback)
{
    $.post('prova.php', { myparameter: p1 }, function(msg)
    {
        updateUI();         
        count++;
        callback(null); //callback with null as the error
    });
},
function(error) //this is called when we're done
{
    //do stuff
});
</script>

这两个函数中的任何一个都应该为您一次只处理一个请求,假设这是您想要的。

于 2012-05-24T12:39:08.653 回答