我有一个超时,它在运行太长时间后基本上会终止进程,但是只有当某个条件尚未满足时才会这样。如果我的情况被击中,我正在使用clearTimeout()
来清除超时,但似乎错误和进程终止仍然存在。
这是我的代码段;即使clearTimeout()
被击中,该错误仍会在5分钟后打印出来。
function poll(callback){
var timeLimit = setTimeout(function(){
if(log) log("Could not get a response from the command.", "error");
process.exit(1);
}, 300000);
exec("some command", function(error, stdout, stderr){
if(stdout){
clearTimeout(timeLimit);
// Do other stuff
} else {
setTimeout(function(){
poll(callback);
}, 1000);
}
});
}
我在浏览器中测试过,它似乎在一个典型的JavaScript控制台中工作,但也许我上面做错了什么?
如果是这样,任何帮助将不胜感激。以上是我的确切代码(当然除了命令和错误消息之外)所以如果有什么不对的话,它应该在上面可见。
提前致谢。
答案 0 :(得分:2)
setTimeout()
位于轮询函数内部,因此每次轮询时都会重置,这意味着我无法清除旧实例。将它移到函数之外,它就可以正常工作。