我不确定我完全获取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