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

发布于 2024-12-04 17:05:54 字数 256 浏览 0 评论 0原文

我有这样的代码:

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

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

I have this-like code:

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

So, i need to do some delay between using function "requestFunction()". How could i do this? Hope it understandable, thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

驱逐舰岛风号 2024-12-11 17:05:54

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 毫秒 (500 * 0)
  • 第二个请求:500 毫秒 (500 * 1)
  • 第三个请求:<强>1000 毫秒(500 * 2)

setTimeout at an increase time:

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

if you loop over these elements, we want to increase the timeout or else all the request would fire at the same time if not delayed, but only after our 500 ms timeout.

  • Time Start: 0 ms
  • First Request: 0 ms (500 * 0)
  • Second Request: 500 ms (500 * 1)
  • Third Request: 1000 ms (500 * 2)
路还长,别太狂 2024-12-11 17:05:54

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

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

或者,您可能想考虑实现 requestFunction 的回调。这将允许您在方法返回后运行代码,并且不需要任何超时等。

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

If you're making ajax calls within your each loop then you may want to run the ajax requests syncronously.

To do this you can set the async property of the ajax request to false.

Alternatively you may want to look into implimenting a callback for requestFunction. This will allow you to run code after your method has returned and will negate the need for any timeout etc.

A callback is basically a method that gets executed at the end of your code. You basically tell your function, here's another function I want you to call when you've finished doing your work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文