我有一个振动功能,我希望每3秒执行一次,直到单击一个按钮为止 我尝试执行此操作的方法是通过执行一个循环,直到条件为false为止,单击该按钮时,条件将设置为false。我可以在while循环内使用sleep,然后再调用振动,除了单击按钮后我想立即中断即可,而不必等待3秒钟左右。
如果设备仍在振动,我正在尝试设置超时,但是我不想持续设置超时,我一次只希望设置一个超时,因此仅在未设置超时的情况下才设置超时已经
this.vibrate()
while(this.state.isVibrating){
if (timeout has not been set){
setTimeout(this.vibrate(), 3000)
}
}
clearTimeout()
答案 0 :(得分:1)
听起来setInterval
在这里是更好的选择。
let interval;
this.vibrate();
interval = setInterval(this.vibrate.bind(this), 3000);
然后,当您单击按钮可以清除间隔时,您可以执行一个函数:
function buttonClicked() {
clearInterval(interval);
}
只需确保interval
变量在buttonClicked函数的范围内即可。