2013-06-13 63 views
1

是否可以设置javascript for循环NOT之间的延迟NOT仅使用settimeout,而是基于何时完成特定的ajax调用?循环迭代之间的jQuery延迟

类似:

for (var i = 0 ; i < list.length ; i++) 
{ 
    $when('index.jsp').done(function(a1){ 
    alert(i); 
    }); 
} 

说Ajax请求的发送和第一个警报出现时,当第一个AJAX调用完成便进行第二次迭代和警觉。

回答

3

我认为有以下应该工作:

(function() { 
    var i = 0, end = list.length; 
    function iterate() { 
     $.ajax('index.jsp').done(function() { 
      alert(i); 
      i++; 
      if (i < end) { 
       iterate(); 
      } 
     }); 
    } 
    iterate(); 
})(); 
+0

不确定为什么它给我语法错误!可能在结尾有什么错误? – ComeRun

+0

我错过了一个大括号,修正了。 – Barmar

+0

谢谢,我试图测试它,但不知何故迭代没有触发。我应该调用它还是在加载时触发? – ComeRun

1

一个简单的方法来完成你以后会使用回调在阿贾克斯功能递归调用自身。否则,我不确定在for循环中执行它的方式,因为Ajax调用是异步的。