每隔X秒执行一次asynchronousJavaScript代码

如何每X秒执行一次asynchronousjs代码(用node.js编写),并确保在执行asynchronous函数的callback(成功,错误)之前,不会启动新的execute / call。 代码示例:

asyncFunc(function(successData){ // do something with successData }, function(errorData){ // do something with errorData }); 

setInterval首先出现在我的脑海里,但是我认为它不能确定我想要什么,如果callback没有在间隔内执行,它会进入队列。

编辑:为了简化大小写,在callback完成后重复asynchronous函数调用1秒钟。

你可以像这样使用setTimeout

 (function loop() { asyncFunc(function(successData){ setTimeout(loop, X); }, function(errorData){ // If you still want to continue: setTimeout(loop, X); }); })(); // execute immediately 

这将在asynchronous调用触发callback时启动延迟。

考虑用一个可重用的方法来抽象这个问题,这个方法允许你指定要调用的函数,调用的时间间隔以及调用的callback函数:

 function repeatAsync(func, interval, success, error) { (function loop() { func( () => { success(); setTimeout(loop, interval); }, () => { error(); setTimeout(loop, interval); } ); })(); // invoke immediately } 

如果你想错误的调用链,打破了第二个参数replace为func只是error ,即func( () => { ... }, error)

Interesting Posts