4
我正在編寫一個node.js應用程序以幫助自動化我的一些家庭啤酒廠。我正在使用的模塊之一是PID算法來控制輸出,以便它們保持某些設定點。我目前正在通過while循環做這件事,但我認爲這段代碼會被阻塞。任何幫助使這個更有效和異步將不勝感激。這裏是我的控制迴路:如何在Node.JS中編寫異步while循環
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);
};
};
我已經改變了一點爲了可讀性,但基本上它。它只會循環,調整輸出,然後反饋新的輸入值。我想循環繼續運行,直到設備關閉。
很顯然,我需要這樣做是非阻塞的,以便在pid運行時我可以繼續控制其他設備。
目前,我只是調用相當於device.pid_on();在我的代碼中。
我有一個想法是使用一個空的回調,這會使這個非阻塞?
device.prototype.pid_on(calback){
while (this.isOn){...};
callback();
};
//call later in code
device.pid_on(function(){});
感謝您的任何/所有幫助!
呀,我想到了這一點。我只是重構了代碼,以便如果設備處於打開狀態,則只要接收到新的輸入值,就會調用pid_on。這取出了循環,並應該幫助CPU加載,因爲pid代碼只在輸入改變時才運行。謝謝您的幫助! – JoshPeltier