我有一个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)
我目前遇到的问题是,在循环中间,函数再次被调用。
答案 0 :(得分:8)
创建一个在计时器上以递归方式调用自身的函数:
(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请求,那么方法会有所不同。