【问题标题】:Node loop: Maximum call stack size exceeded节点循环:超出最大调用堆栈大小
【发布时间】:2015-03-28 06:19:09
【问题描述】:

我正在尝试实现一个无限循环,每 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();

不是每 5 秒打印一次“doWork called”,它只是刷新了很多这个,并在这个状态下退出:

RangeError: Maximum call stack size exceeded

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

【问题讨论】:

    标签: node.js


    【解决方案1】:

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

    setTimeout(query_doWork(), 5000);
    

    与:

    setTimeout(query_doWork, 5000);
    

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 2015-10-24
      • 2015-12-29
      • 2017-12-27
      相关资源
      最近更新 更多