Я не уверен, что полностью получаю 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