簡體   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