我有一个功能,可以做一些工作。完成后,它会调用回调。在那之后我得到了结束'在控制台。但我需要再次执行相同的功能。我怎样才能做到这一点? THX。
function start(callback){
//... some work ...
if(work_finished){
callback();
}
}
start(function(){
console.log('END');
});
答案 0 :(得分:0)
如果你的函数是异步的,你可以创建一个包装函数,然后再从回调中再次调用它。请注意,没有任何终止条件,这将永远运行。
function start(callback){
//... some work ...
if(work_finished){
callback();
}
}
function run() {
start(function(){
console.log('END');
run();
});
}
如果你的函数不是异步的,上面的操作最终会导致堆栈溢出(由于无限递归),所以你必须让调用者start()
再次触发它:
function start(callback){
//... some work ...
if(work_finished){
callback();
}
// then return true or false depending upon whether you want
// it to keep getting called again
return true;
}
function run() {
var more;
do {
more = start(function(){
console.log('END');
});
} while (more === true);
}
而且,如果您只是想要定期调用函数,可以像这样使用setInterval()
:
// call my function every 5 seconds
var timer = setInterval(function() {
start(function(){
console.log('END');
});
}, 5000);
答案 1 :(得分:0)
有很多方法可以在节点中重复执行函数。
代码:
function start(callback){
//... some work ...
if(work_finished){
callback();
// call function again
// should be OK if some work is async so it doesn't
// block the thread
start(callback);
// or schedule to be called at end of event loop
// setImmediate(start, callback);
}
}
start(function(){
console.log('END');
});
执行任意数量的额外时间功能,这需要跟踪多少来电
将函数设置为要调用的间隔~n毫秒
setInterval(start, 1000, callback);