模块中的无限循环无法工作

我试图写一个Node模块每秒运行一些代码:

 function worker() { } worker.prototype.process = function(callback) { console.log("doing the job"); callback(); } worker.prototype.query_process = function(callback) { console.log("query_process called"); this.process(function() { console.log("Process callback called"); setTimeout(function() { this.query_process }, 1000); }); } worker.prototype.start = function() { this.query_process(); } module.exports = worker; 

我这样使用它:

 var worker = require('./lib/worker'); var worker = new worker(); worker.start(); 

这是运行脚本时的输出:

 & node workerTest.js query_process called doing the job Process callback called 

为什么这不是在无限循环中运行

EDIT1

方法调用后添加括号

 setTimeout(function() { this.query_process() }, 1000); 

但现在得到这个错误:

 /Users/dhrm/Development/project/lib/worker.js:14 setTimeout(function() { this.query_process() }, 1000); ^ TypeError: undefined is not a function at null._onTimeout (/Users/dhrm/Development/project/lib/worker.js:14:32) at Timer.listOnTimeout (timers.js:110:15) 

  setTimeout(function() { this.query_process }, 1000); 

您不要再次调用this.query_process 。 之后添加括号来调用该函数。


回复编辑:

您还需要保存在callback中使用的上下文:

 worker.prototype.query_process = function(callback) { var me = this; console.log("query_process called"); this.process(function() { console.log("Process callback called"); setTimeout(function() { me.query_process() }, 1000); }); }