繁体   English   中英

节点循环:超出最大调用堆栈大小

[英]Node loop: Maximum call stack size exceeded

我正在尝试实现一个无限循环,每5秒在一个线程HTTP监视器的启发下进行一些工作。

function doWork(callback) {
    console.log("doWork called");
    //todo: do work
    callback();
}

function query_doWork() {
    doWork(function() {
        setTimeout(query_doWork(), 5000);
    });
}

query_doWork();

与其每隔5秒打印一次“ doWork被调用 ”,它只是刷新了很多,然后以这种状态退出:

RangeError: Maximum call stack size exceeded

也许我对Node.js并不了解,但是我明白了为什么它不能正常工作。 是什么原因?

setTimeout您应该定义要调用的函数。 相反,您正在做的就是调用它。 这就是为什么要输入无限递归循环的原因。 因此,请替换:

setTimeout(query_doWork(), 5000);

与:

setTimeout(query_doWork, 5000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM