NodeJS clearTimeout()似乎无法正常工作?

时间:2014-01-09 11:44:08

标签: javascript node.js timeout settimeout

我有一个超时,它在运行太长时间后基本上会终止进程,但是只有当某个条件尚未满足时才会这样。如果我的情况被击中,我正在使用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控制台中工作,但也许我上面做错了什么?

如果是这样,任何帮助将不胜感激。以上是我的确切代码(当然除了命令和错误消息之外)所以如果有什么不对的话,它应该在上面可见。

提前致谢。

1 个答案:

答案 0 :(得分:2)

Bleh,深夜时刻。

setTimeout()位于轮询函数内部,因此每次轮询时都会重置,这意味着我无法清除旧实例。将它移到函数之外,它就可以正常工作。