在JavaScript中每隔N秒调用一次异步函数
问题描述:
我有一个Java脚本函数,需要undefined时间才能完成。在一个循环中,我想等待功能完成,然后等待一段确定的时间(例如5000毫秒)并再次调用该函数。我如何在Java脚本中完成此操作?在JavaScript中每隔N秒调用一次异步函数
基本上我想这样的:
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请求一样,该方法会有所不同。
你是对的。我正在使用AJAX请求。我会更新这个问题。 – xsl
这不是*不同 - 让你的AJAX回调函数调用setTimeout(假设你的.ajax函数在成功完成时具有回调函数)。如果AJAX调用没有成功完成,你打算做什么? – RobG
我会忽略不成功的呼叫。实际上,我在函数中有多个AJAX调用,所以如果成功完成,我无法真正执行setTimeout。 – xsl