在初始化计时器之前,使用 clearInterval 清除计时器值
clearing timer value with clearInterval before initializing the timer
在谷歌搜索一些内容时,我发现了这段代码。
clearInterval(slip.timer);
slip.timer = setInterval(function () { mv(target, direction); }, 15);
我的疑问是,首先我们需要使用 setInterval 设置计时器,然后使用 clearInterval 清除它。在这里,我们如何在初始化之前使用 slip.timer?谁能帮我?我们在哪些应用程序中像这样编码?
只要slip
在此代码运行时初始化,就可以了。 根据规范,使用不是有效间隔 ID 的值调用clearInterval
(例如,如果尚未设置slip.timer
则为 undefined
或 null
)是定义的行为:
clearTimeout() 和 clearInterval() 方法必须清除条目 从 的活动计时器列表中标识为句柄 调用方法的窗口计时器对象(如果有),其中 句柄是传递给方法的参数。(如果句柄没有 标识窗口计时器的活动计时器列表中的条目 调用该方法的对象,该方法不执行任何操作。
(强调我的)
当计时器可以多次触发以确保您没有多个间隔计时器副本调用您的回调时,这是一种相当常见的方法 - 如果有可能发生这种情况,您需要确保在开始新间隔之前清除上一个间隔。
如果多次使用setTimeout
或setInterval
,则在开始新计时器之前清除这些计时器很有用。
考虑这个例子:你有一个从 0 开始的秒表。你启动它,数字就会增加。现在您想重置秒表并使其仍然运行(例如,注意完成圈数的时间)。您可以使用单个函数执行以下操作来实现此目的:
- 将计时器设置为 0
- 从
setInterval
开始
如果您运行此功能两次(即一次初始启动,然后重置),则会设置两个间隔计时器,而不是一个。因此,秒表的运行速度将提高一倍。这是不希望的行为,因此函数应改为执行以下步骤:
- 停止当前间隔计时器,如果存在
clearInterval
- 将计时器设置为 0
- 从
setInterval
开始
正如詹姆斯·索普(James Thorpe)指出的那样,传递给clearInterval
的undefined
或null
参考并不是什么大问题。
如果你想在初始化之前安全地清除某些内容,但是您可以简单地初始化该内容:
var slip = {
timer: 0
};
// … Later:
clearInterval(slip.timer);
或者你可以测试是否存在:
if(window.slip && slip.timer){
clearInterval(slip.timer);
}
或者,如果您的代码处于闭包中并且未全局定义slip
:
if(typeof slip !== "undefined" && slip.timer){
clearInterval(slip.timer);
}
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 设置倒计时计时器,IE出现问题
- MobileFirst:在客户端运行计时器作业-最佳选项
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 倒计时计时器应该持续两个php页面
- 在Jquery倒计时计时器上设置每个数字的动画
- 我如何才能确保计时器设置为每天4点半,所以我不会;不用在Javascript中提及某个日期
- 如何禁用窗口.当计时器超时时,打开卸载警报
- 在Nodejs中为许多用户处理计时器
- 如果弹出窗口关闭,Javascript停止/重置计时器
- 如何在隐藏时暂停jquery计时器
- Javascript倒计时计时器倒计时未正确更新秒/分钟
- 计时器循环从不运行
- Progressbar计时器,仅在页面刷新时重新加载
- 创建一个倒计时计时器脚本,该脚本计算声音文件的持续时间,而不是特定的日期
- 递归倒计时计时器
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 试图创建一个24小时计时器来重置自己
- 在JS中设置计时器1秒
- 眨眼计时器