如何在Node.JS中编写一个asynchronouswhile循环

我正在编写一个node.js应用程序来帮助自动化我的一些家酿酒厂。 我正在使用的一个模块是一个PIDalgorithm来控制输出,使它们保持一定的设定值。 我目前正在通过一个while循环,但是我认为这个代码将被阻止。 任何帮助使这个更有效和asynchronous将不胜感激。 这是我的控制循环:

device.prototype.pid_on = function(){ while(this.isOn){ this.pid.set_target(this.target); // make sure that the setpoint is current var output_power = this.pid.update(this.current_value); // gets the new output from the PID this.output.set_power(output_power); }; }; 

为了便于阅读,我稍微改了一下,但基本上就是这样。 它只会循环,调整输出,然后反馈新的input值。 我希望循环继续运行,直到设备closures。

显然,我需要这个非阻塞,这样我可以继续控制其他设备,而PID正在运行。

目前,我只是调用相当于device.pid_on(); 在我的代码。

我有一个想法是使用一个空的callback,这将使这个非阻塞?

 device.prototype.pid_on(calback){ while (this.isOn){...}; callback(); }; //call later in code device.pid_on(function(){}); 

感谢任何/所有的帮助!

避免while循环更好。

 device.prototype.pid_on = function() { var that = this; if ( this.isOn ) { ... do stuff process.nextTick(function() { that.pid_on(); }); } }; 

要么

 device.prototype.pid_on = function() { var that = this; if ( this.isOn ) { ... do stuff setTimeout(function() { that.pid_on(); }, 0); } };