我有一个超时,基本上会在运行太长时间后终止进程,但这只是在那时尚未满足特定条件的情况下。如果满足我的条件,我将使用 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 控制台中工作,但也许我在上面做错了什么?
如果是这样,我们将不胜感激任何帮助。上面是我的确切代码(当然,除了命令和错误消息),因此如果有任何错误,它应该在上面可见。
提前致谢。
最佳答案
哎呀,深夜时刻。
setTimeout()
位于轮询函数内部,因此每次轮询时都会重置,这意味着我无法清除旧实例。将其移到函数之外,它就可以正常工作了。
关于javascript - NodeJS clearTimeout() 似乎无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21019272/