我试图实现一个无限循环,每隔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的基本信息,但我明白为什么这不能正常工作。是什么原因?
答案 0 :(得分:2)
在setTimeout
中,您应该定义要调用的函数。而你正在做的是调用它。这就是你进入无限递归循环的原因。所以替换:
setTimeout(query_doWork(), 5000);
使用:
setTimeout(query_doWork, 5000);