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

时间:2015-03-27 21:59:43

标签: node.js

我试图实现一个无限循环,每隔5秒做一些由a single threaded HTTP monitor启发的工作。

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

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

query_doWork();

而不是打印" doWork called "每5秒,它只是冲洗了很多这个,然后退出这个状态:

RangeError: Maximum call stack size exceeded

也许我没有关于Node.js的基本信息,但我明白为什么这不能正常工作。是什么原因?

1 个答案:

答案 0 :(得分:2)

setTimeout中,您应该定义要调用的函数。而你正在做的是调用它。这就是你进入无限递归循环的原因。所以替换:

setTimeout(query_doWork(), 5000);

使用:

setTimeout(query_doWork, 5000);