我不確定我完全獲取javascript。我有三個函數可以互相調用一個,兩個和三個...但是如果兩個條件成立,我不想讓三個函數運行。由於某種原因,它保持運行功能三。我如何確保功能三不運行基於功能2的條件。對不起,如果這已經回答了某處,但我找不到它..我看了看。認爲我的頭即將爆炸..謝謝。回調函數中的Javascript函數控制
這是我如何配置我的代碼基本的例子:
gpio = require("rpi-gpio");
gpio.setup(35, gpio.DIR_OUT, dooropen); //motor will raise the door
//gpio.setup(37, DIR_OUT, CLOSEDOOR); //motor will lower the door
gpio.setup(40, gpio.DIR_IN, TopHall); //Top Hall Effect Sensor
gpio.setup(38, gpio.DIR_IN, BottomHall); // Bottom Halle Effect Sensor
function dooropen(err, value){
if (err) {
console.log('Some type of error');
} else {
//first check door is closed on gpio 38
//use function doorClosedCallback which receives (err, value) arguments from DOORCLOSED gpio pin
gpio.read(38, BottomHall);
}
}
function BottomHall(err, value) {
if (err) {
console.log('Error checking BottomHall.');
} else if (value === true) {
console.log('Door is not closed.');
return;
} else {
gpio.write(35, true, TopHall);
console.log('Door will open now.');
}
}
function TopHall(err, value) {
if (err) {
console.log('Door open failed to start.', err);
return;
} else {
function readInput() {
gpio.read(38, function(err, value) {
console.log('The value is ' + value);
});
}
var doorinvteralopen = setInterval(function(){
gpio.read(40, function(err, value) {
if (err) {
console.log('Door start failed.', err);
return;
} else if (value === true) {
console.log('Door not yet open, keep the motor running.');
} else {
clearInterval(doorinvteralopen);
console.log('Door is finally open.');
gpio.write(35, false, function(err) {
if (err) {console.log('Error stopping the door motor.', err);
}
});
}
});
}, 1000);
}
}
//CHANGE I WILL ADD TO ABOVE
function TopHall(err, value) {
gpio.read(38, function(err, value){
if(value !== false){
console.log('No Hall Effect Sensors available, com stopped');
return;
}
});
var doorinvteralopen = setInterval(function(){...
您已從代碼中刪除所有相關部分。我們需要看看你如何設置'twoParam'。請顯示您的*實際*代碼和示例輸入。 – JJJ
Juhana我添加了我的實際程序.. – fatboy
這樣更好,但現在還不清楚哪部分代碼無法正常工作。請描述你期望代碼的輸出和實際是什麼。包括你從gpio獲得的輸入。 – JJJ