我有一个功能,可以完成一些工作。完成后它会调用回调。之后,我在控制台中获得'END'。但我需要再次执行相同的功能。我怎样才能做到这一点?谢谢。NodeJS:完成后调用功能
function start(callback){
//... some work ...
if(work_finished){
callback();
}
}
start(function(){
console.log('END');
});
我有一个功能,可以完成一些工作。完成后它会调用回调。之后,我在控制台中获得'END'。但我需要再次执行相同的功能。我怎样才能做到这一点?谢谢。NodeJS:完成后调用功能
function start(callback){
//... some work ...
if(work_finished){
callback();
}
}
start(function(){
console.log('END');
});
如果你的函数是异步的,你可以创建一个包装函数,并且从字面上再次从回调中调用它。请注意,没有任何终止条件,这将永远运行。
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);
Thx!异步函数的第一个答案就是我一直在寻找的东西:)。 –
有很多方法可以在节点中重复执行函数。
代码:
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);
你的意思是你想要的功能调用自身?这就是所谓的递归,它有许多(所有?)语言可用,您可以继续前进并执行它...... – Amit
“但我需要再次执行相同的功能”,帮助解释在哪个函数中再次调用哪个函数? – Surely
我想你需要用真实的代码来解释一下你想达到的目标。 –