Calling an asynchronous function every N seconds in JavaScript
本问题已经有最佳答案,请猛点这里访问。
我有一个Java脚本函数,需要一个未定义的时间来完成。在一个循环中,我希望等待函数完成,然后等待一个定义的时间(例如5000毫秒),然后再次调用该函数。如何在Java脚本中实现这一点?
基本上我想要这个:
1 2 3 4 5 | call function and wait until it is finished wait another 5000 seconds call function and wait until it is finished wait another 5000 seconds ... |
函数本身如下所示:
1 2 3 | for every group in list .ajax(delete group items; get group items; add group items) |
我现在遇到的问题是,在循环的中间,函数以某种方式再次被调用。
生成一个在计时器结束时递归调用自身的函数:
1 2 3 4 | (function my_func() { // your code setTimeout( my_func, 5000 ); })(); |
这会立即调用
这样,在代码完成之前计时器不会开始。
您可以将
1 2 3 4 5 6 | (function my_func() { // your code if( some_criteria_is_met ) { setTimeout( my_func, 5000 ); } })(); |
注意,这意味着代码是同步的。如果您正在运行一些异步代码,比如Ajax请求,那么方法会有所不同。