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

标签 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 控制台中工作,但也许我在上面做错了什么?

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

提前致谢。

最佳答案

哎呀,深夜时刻。

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

关于javascript - NodeJS clearTimeout() 似乎无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21019272/

相关文章:

javascript - 使用 Node Protractor js 连接 oracledb

node.js - Redis 消息的异步操作

c# - 在 SQL Server 2008 中调用存储过程时超时

javascript - 使用 Greasemonkey 脚本替换特定的表值

javascript - 为什么更新亮度滤镜在 Safari 中没有效果?

javascript - 如何使我的文本保留变量编号而不是 javascript D3 中的引用?

javascript - 从 Mongoose 查询创建对象

javascript - Mocha on Node 中的 XMLHttprequest

java - J2ME中如何实现线程超时?

Java HTTP GET 响应等待直到超时