Javascript 是否可以防止计时器结束?

Javascript 是否可以防止计时器结束?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我试图在用户单击按钮时显示标签。我曾尝试使用setTimeout来实现这一点,但当您在超时结束之前多次单击该按钮时,这无法正常工作 这就是我得到的: const [cameraLabelVisible, setCameraLabelVisible] = useState(false); let labelTimer; function labelVisible() { setCameraLabelVisible(true); labelTimer = setTimeout(

我试图在用户单击按钮时显示标签。我曾尝试使用setTimeout来实现这一点,但当您在超时结束之前多次单击该按钮时,这无法正常工作

这就是我得到的:

const [cameraLabelVisible, setCameraLabelVisible] = useState(false);    
let labelTimer;

function labelVisible() {
   setCameraLabelVisible(true);
   labelTimer = setTimeout(() => {
      setCameraLabelVisible(false);
         clearTimeout(labelTimer);
      }, 1500);
   }
};
我的问题是:是否可以在计时器结束前单击相同的按钮将计时器重置为初始值(在本例中为1500)


如果在时间结束前多次单击按钮,我想显示标签。

您可以先清除现有计时器:

const[cameraLabelVisible,setCameraLabelVisible]=useState(false);
让拉贝蒂默;
函数labelVisible(){
setCameraLabelVisible(真);
//如果有其他计时器正在运行,请清除计时器
if(labelTimer)clearTimeout(labelTimer);
labelTimer=setTimeout(()=>{
setCameraLabelVisible(假);
}, 1500);
}
我的问题是:是否可以将计时器重置为初始值 (在本例中为1500)在计时器结束前单击同一按钮

是的,这可以通过清除现有超时并创建新超时来实现。这可以通过以下方式实现:

const [cameraLabelVisible, setCameraLabelVisible] = useState(false);    
let labelTimer;

function labelVisible() {
    if(labelTimer) {
        clearTimeout(labelTimer);
    }    
    setCameraLabelVisible(true);
    labelTimer = setTimeout(() => {
       setCameraLabelVisible(false);
          clearTimeout(labelTimer);
       }, 1500);
    }
 };
如果多次单击按钮,我想显示标签 在时间用完之前

这听起来和你上面问的问题不一样。如果我理解正确,下面的内容将允许您在1.5秒内多次单击按钮,并且标签在清除之前仅显示该时间

const [cameraLabelVisible, setCameraLabelVisible] = useState(false);    
let labelTimer = undefined;

function labelVisible() {
    setCameraLabelVisible(true);
    if(!labelTimer) {    
        labelTimer = setTimeout(() => {
            setCameraLabelVisible(false);
            labelTimer = undefined;
        }, 1500);
    }
 };

是的。但这不是问题所在,你到底在问什么?有一个变量只有在尚未设置的情况下才进行设置,这非常简单,那么,您实际上需要帮助做什么呢?