gpt4 book ai didi

javascript - 如何停止间隔?

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:51 26 4
gpt4 key购买 nike

我正在尝试创建一个按钮来停止运行 setInterval 的方法。

我正在使用 clearInterval 来执行此操作,但出于某种原因它不允许我将 setInterval 变量作为目标。

class Helpers {
static start(value: Vehicle): void {
let begin = setInterval(value.calculateSpeed, 1000, value);
}
static stop() {
let stop = clearInterval(Helpers.begin);
}
}

我也尝试过使用命名空间,但也没有用。

namespace Extras {
export function start(value:Vehicle) {
let begin = setInterval(value.calculateSpeed, 1000, value);
}
export function stop() {
let stop = clearInterval(Extras.begin);
}
}

start() 方法运行良好...但是 stop() 方法什么都不做。非常感谢任何帮助。

非常感谢你们的帮助!你解决了我的问题!

最佳答案

您需要引用的变量是静态的。目前,变量 begin 是您的 start 函数的本地变量。此外,您不需要保留对 clearInterval 返回值的引用。 begin 更好的名称是 intervalintervalId

class Helpers {
static interval;
static start(value: Vehicle): void {
Helpers.interval = setInterval(value.calculateSpeed, 1000, value);
}
static stop() {
clearInterval(Helpers.interval);
}
}

更新:但是,将 intervelId 设置为静态并不是一个好主意,因为您可能希望同时在多个地方使用此 Helper 类。将其设置为静态将创建变量的单个副本,这可能会导致问题。

更好的方法是这样的:

class Helpers {
private _intervalId;
start(value: Vehicle): void {
this._intervalId = setInterval(value.calculateSpeed, 1000, value);
}
stop() {
clearInterval(this._intervalId);
}
}

要调用该函数,您可以使用一些对象:

const helper:Helpers = new Helpers();
helper.start();

此外,请确保 helper.start(); 在使用同一对象停止之前不会被多次调用。要正确处理这种边缘情况,您可以检查 start()_intervalId 的值,如果已设置则抛出一些错误。在 stop() 的情况下,您可以设置 this._intervalId = null

关于javascript - 如何停止间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55744316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com