【发布时间】:2022-01-16 20:11:31
【问题描述】:
假设我有一个递增计数器的recursive 函数,并且我想根据用户请求重置此计数器。
为此,我声明了一个状态变量,当用户请求重置时该变量将变为“真”。
在我的函数中,我有一个条件来检查这个状态变量是否为真,如果是,它会做什么来重置计时器。
不幸的是,由于无法识别状态更改,因此条件永远不会为真(我使用控制台再次检查以确保)。
当使用像window.resetRequested 这样的全局变量时,或者通过在组件函数之外声明一个变量而不是state,同样的代码也可以工作。
我觉得这里缺少一些基本的东西(这是有道理的,因为我对网络编程还很陌生)。
let timerValue = currentUser.sessionTimeout;
function createTimer() {
if (timerResetRequested === true) {
timerValue = currentUser.sessionTimeout;
}
if (timerValue === 0) {
const logOutDate = new Date();
logOut();
}
else {
setTimeout(() => {
timerValue --;
createTimer();
}, 1000);
}
}
createTimer();
以上几乎就是我想要做的。
感谢您的帮助。
【问题讨论】:
-
initialTimervalue在哪里使用? -
@Mohit Maroliya B17CS036 谢谢,我在粘贴代码时遇到了一些问题,忘记了这一行。固定。