javascript - 在 JavaScript 中每 N 秒调用一次异步函数

标签 javascript sleep

<分区>

我有一个需要未定义时间才能完成的 Java Script 函数。在一个循环中,我想等到函数完成,然后等待定义的时间(例如 5000 毫秒)并再次调用该函数。我如何在 Java Script 中完成此操作?

基本上我想要这个:

call function and wait until it is finished
wait another 5000 seconds
call function and wait until it is finished
wait another 5000 seconds
...

函数本身看起来像这样:

for every group in list

    .ajax(delete group items; get group items; add group items)

我目前遇到的问题是,在循环的中间,函数以某种方式再次被调用。

最佳答案

创建一个在计时器结束时递归调用自身的函数:

(function my_func() {
    // your code
    setTimeout( my_func, 5000 );
})();

这会立即调用 my_func,然后在 5 秒延迟后在函数末尾递归调用它。

这样,在您的代码完成之前,计时器不会开始计时。


您可以将 setTimeout() 放在 if 语句中,使递归依赖于某些条件:

(function my_func() {
    // your code
    if( some_criteria_is_met ) {
        setTimeout( my_func, 5000 );
    }
})();

请注意,这意味着您的代码是同步的。如果您正在运行一些异步代码,例如 AJAX 请求,则方法会略有不同。

关于javascript - 在 JavaScript 中每 N 秒调用一次异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7314466/

相关文章:

javascript - AngularJs 空表单并从输入中删除无效状态

c - 为什么 printf() 之后的行调用 sleep() 在打印任何内容之前执行?

javascript - 防止 html onclick、onmouseout 中的 xss,...用于 SPA

javascript - 需要通过javascript和php从检查的项目中提取数据库信息

javascript - JavaScript 中全局变量和局部变量的奇怪行为

C++:GetAsyncKeyState() 不会立即注册按键

linux - 预计 sleep 时间(1)

Python:暂停函数但不是整个程序

Android sleep() 不阻塞 UI

javascript - AngularJS:使服务状态可观察