Javascript 是否可以防止计时器结束?
我试图在用户单击按钮时显示标签。我曾尝试使用setTimeout来实现这一点,但当您在超时结束之前多次单击该按钮时,这无法正常工作 这就是我得到的:Javascript 是否可以防止计时器结束?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我试图在用户单击按钮时显示标签。我曾尝试使用setTimeout来实现这一点,但当您在超时结束之前多次单击该按钮时,这无法正常工作 这就是我得到的: const [cameraLabelVisible, setCameraLabelVisible] = useState(false); let labelTimer; function labelVisible() { setCameraLabelVisible(true); labelTimer = 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);
}
};
是的。但这不是问题所在,你到底在问什么?有一个变量只有在尚未设置的情况下才进行设置,这非常简单,那么,您实际上需要帮助做什么呢?