每隔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)