如何在jQuery.each函数的每个循环之间进行延迟?

我有这样的代码:

$('li').each(function(){ var data = $(this).text(); requestFunction(data, function(status){ if ( status == 'OK' ) do stuff... }); }); 

所以,我需要在使用函数“requestFunction()”之间做一些延迟。 我怎么能这样做? 希望它可以理解,谢谢。

setTimeout在增加的时间:

 $('li').each(function(indexInArray){ var data = $(this).text(); setTimeout( function () { requestFunction(data, function(status){ if ( status == 'OK' ) do stuff... }); }, indexInArray * 500); }); 

如果你循环遍历这些元素,我们想要增加超时,否则所有请求都会在没有延迟的情况下同时触发,但仅在我们的500毫秒超时之后。

  • 时间开始: 0毫秒
  • 第一次请求: 0 ms(500 * 0)
  • 第二次请求: 500毫秒(500 * 1)
  • 第三次请求: 1000毫秒(500 * 2)

如果您在each循环中进行ajax调用,那么您可能希望同步运行ajax请求。

为此,您可以将ajax请求的async属性设置为false

或者,您可能希望查看对requestFunction的回调。 这将允许您在方法返回后运行代码,并且无需任何超时等。

回调基本上是一种在代码末尾执行的方法。 你基本上告诉你的function,这是我希望你在完成工作后打电话的另一个function。