回调中的 JavaScript 函数控制
Javascript function control in callbacks
我不确定我是否完全掌握了javascript。我有三个函数,它们互相调用,所以一,二和三。 但如果两个条件为真,我不希望三个运行。 由于某种原因,它一直运行功能三。如何确保函数 3 不会根据函数 2 中的条件运行。 抱歉,如果这已经在某处回答了,但我找不到它。我看了又看。以为我的头快要爆炸了。谢谢。
这是我如何配置代码的基本示例:
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(){...
如果我正确理解了您的问题,这可以通过函数二中的简单 else 来解决,使其看起来像这样:
function two(twoParam) {
if (twoParam === true) {
return;
}
else {
var threeParam = ...;
three(threeParam);
}
}
相关文章:
- 如何控制组件'的createContent函数被激发
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 访问控制台中的匿名函数
- 在chrome控制台上调试javascript函数
- 代码气味-将布尔控制参数传递给函数
- 函数在控制台中显示“未定义”
- 函数在控制台中正确执行,但在代码中不正确
- 从根本上说,函数调用出了问题.功能在控制台中确实有效
- JS函数如何/为什么不能'不能在代码中执行,但在chrome控制台中运行良好
- 函数getElementsByClassName()在控制台中显示错误
- 用户控制(.ascx)和java脚本函数
- angularjs[ng:areq]参数'fn'不是函数,在控制台中获取字符串时出错
- 函数可以在控制台中工作,但不能在jQuery中工作
- 轨道控制 '三.球形不是构造函数的错误
- 如何将包含猫鼬函数的方法与控制流框架(例如异步或 Step)一起使用
- 有没有一种明确的方法来找出在FF的开发者控制台中调用函数的位置
- 从控制台中的工作函数转换为工作脚本.(请参阅编辑)
- 回调中的 JavaScript 函数控制
- 通过javascript函数控制音量
- 如何使屏幕上的任意位置单击关闭由jQuery toggle()函数控制的移动菜单