【问题标题】:Check IF statment every X seconds and then run the code once每 X 秒检查一次 IF 语句,然后运行一次代码
【发布时间】:2019-09-09 17:32:55
【问题描述】:

我正在寻找每 1 秒检查一次 IF 语句的方法,

var vid = document.getElementById("video");
var cTime = vid.currentTime;
if ( cTime > 5 && cTime < 10) {
}

一旦满足,就运行代码

  vid.currentTime = 15

我尝试过 setInterval 方法,但假设它是内存泄漏。我尝试的另一件事是

var vid = document.getElementById("video");
var cTime = vid.currentTime;
function skip() {
  if (cTime > 5 && cTime < 10) {
    vid.currentTime = 15
  }
  setTimeout(skip, 1000);
}

但它不断将 currentTime 触发到 15。我将来可能会有多个 if 语句。最好的方法是什么?

【问题讨论】:

  • var cTime = vid.currentTime;移动到skip()函数内部?
  • 您的代码中只能获得一次cTime。因此,每次调用 skip 函数时,它的值总是与第一次相同。因此,如果您在第一次运行代码时cTime 在 5 到 10 之间,那么它将永远是这样。
  • “我试过 setInterval 方法,但假设它是内存泄漏。”,你为什么会这样假设?
  • 您将 currentTime 设置为 15,因此每次将值设置为 15
  • 在这里阅读一些关于内存泄漏的 cmets

标签: javascript loops if-statement setinterval current-time


【解决方案1】:

从您的角色中删除setTimeout(skip, 1000);,并将其放置在您正确拨打电话的代码的另一部分中。

var vid = document.getElementById("video");
var cTime = vid.currentTime;

setTimeout(skip, 1000);

function skip() {
  if (cTime > 5 && cTime < 10) {
    vid.currentTime = 15
  }
}

【讨论】:

  • setTimeout 只会触发一次。我假设他们想要setInterval,然后可以用clearInterval 清除它
  • setInterval 可以使用吗?我的意思是它不是内存泄漏?
  • 完成函数后需要明确的间隔。 This article可以帮到你。
猜你喜欢
  • 2018-12-19
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 2019-01-12
  • 1970-01-01
  • 2021-09-12
相关资源
最近更新 更多