javascript - 带有动态键的 JS SetInterval 未清除
问题描述
以下代码设置了一个间隔。如果调用该功能,则应该首先清除现有间隔。然而事实并非如此。我唯一的理论是函数变量 key 不足以识别原始间隔。
您可以使用动态键调用并清除间隔吗?
function countdown(key, target, timestamp){
clearInterval(key)
key = setInterval(function(){
if(timestamp <= 0){
clearInterval(key)
}
timestamp = timestamp - 1
target.text(timestamp)
}, 1000)
}
激活该间隔有效
$("#somethhing").click(function(){
countdown("testInterval", $("div.showTimer"), 12000)
})
但是,如果#somethhing
再次单击它不会首先清除间隔。好像 usingkey
不满足清除区间的 ID。有没有办法做到这一点,或者必须使用明确定义的变量设置所有间隔才能清除它们。
解决方案
问题是,当您重新分配时key
, setInterval 返回的新值不会改变任何内容。您需要做的是访问变量以清除它。
您不能定义变量来自己清除它们。你必须保存身份证。您可以保存一个将您想要的名称映射到这些 id 的对象,如果您愿意,只需让函数更新该对象
推荐阅读
- angular - 为什么即使我添加了 takeUntil 和 skipWhile,ngrx 也会返回 2 个对象?
- javascript - 你能取消初始化一个javascript函数吗?
- c# - 是否可以将 WPF 数据网格上的用户输入数据存储到字符串 var 中?
- python - 在 Python 中的 If 语句中删除对象
- node.js - Akka 演员与 nodejs 工作线程。为什么(如果)演员更好?
- c++ - 如何在 Windows 上的 C++ 中通过蓝牙实现串行通信?
- java - jooq 嵌套选择和类型安全
- c# - 重写以下方法的更好方法
- powershell - 非域帐户或本地用户帐户的凭据检查
- git - 如何在git中推送到正确的分支