为什么我的setInterval定时器未在0停止,还在持续计数?
根因分析
clearInterval 方法要求传入的参数是 setInterval 执行后返回的定时器唯一ID,你当前代码中将倒计时剩余数值存在了 timer 变量中,执行清理时传入的是倒计时的数值(走到else分支时数值已经为0),无法匹配到正在运行的定时器,因此定时器会持续执行,无限输出日志。
修正方案
将定时器ID和倒计时数值用不同变量分开存储即可:
// 存储倒计时剩余数值 let countdown = 6; // 存储setInterval返回的定时器ID const timer = setInterval(function () { if (countdown > 0) { countdown--; console.log(countdown); } else { console.log("Time's Up"); // 传入正确的定时器ID完成清理 clearInterval(timer); } }, 1000);
内容的提问来源于stack exchange,提问作者AtomicCommit
相关产品推荐
相关产品推荐

