Javascript,运行函数0.5秒,然后停止(循环)

Javascript,运行函数0.5秒,然后停止(循环),javascript,node.js,Javascript,Node.js,我正在运行一个安装了raspberry pi gpio模块的节点服务器。我试图让ESC启动并运行0.5秒,然后我需要它停止0.5秒,然后在循环中再次启动。但是,如果“启动”=0(按钮关闭),我需要回路完全停止,并将伺服脉冲宽度设置为1000(电机停止) 这是我的代码,可以用。但这并没有停止 var start=new blynk.VirtualPin(4); start.on('write',函数t(start){ 如果(开始==1){ setInterval(函数(){ setInterval

我正在运行一个安装了raspberry pi gpio模块的节点服务器。我试图让ESC启动并运行0.5秒,然后我需要它停止0.5秒,然后在循环中再次启动。但是,如果“启动”=0(按钮关闭),我需要回路完全停止,并将伺服脉冲宽度设置为1000(电机停止)

这是我的代码,可以用。但这并没有停止

var start=new blynk.VirtualPin(4);
start.on('write',函数t(start){
如果(开始==1){
setInterval(函数(){
setInterval(函数(){
电机伺服写入(1920);
}, 500);
setInterval(函数(){
电机伺服写入(1000);
}, 1000);
}, 500);
}否则{
电机伺服写入(1000);
}
电机伺服写入(1000);
});

有人能告诉我哪里出错了吗?

将间隔存储在变量中

var myInterval = setInterval(function() { [... your code code] },delay);
那就来阻止它吧

clearInterval(myInterval);

我认为
setInterval
可能是使用错误的东西。
setInterval
正在重新出现。如果你真的只想运行一次,等一下,然后运行其他的。尝试使用,它会等待x ms,然后执行某些操作

var id = null;
start.on('write', function t(start) {
    if(start == 1){
        pulse();
    }
    else {
        clearTimeout(id);
        motor.servoWrite(1000);
    }   
});

function pulse() {
    servoOn();
    id = setTimeout(function(){
        servoOff();
        id = setTimeout(function(){
            pulse();
        }, 1000);
    }, 500);
}

function servoOn(){
    motor.servoWrite(1920); 
}

function servoOff(){
    motor.servoWrite(1000);
}

当然,时间以毫秒为单位,函数的第二个参数是
setInterval
。工作得很好,谢谢:)
var id = null;
start.on('write', function t(start) {
    if(start == 1){
        pulse();
    }
    else {
        clearTimeout(id);
        motor.servoWrite(1000);
    }   
});

function pulse() {
    servoOn();
    id = setTimeout(function(){
        servoOff();
        id = setTimeout(function(){
            pulse();
        }, 1000);
    }, 500);
}

function servoOn(){
    motor.servoWrite(1920); 
}

function servoOff(){
    motor.servoWrite(1000);
}