所以我知道您可以将setInterval分配给变量,然后将该变量传递给clearInterval以禁用定时器。
我在想:
假设我有一个在页面启动时为null的全局变量。当调用特定函数时,将为全局变量分配setInterval(fname,seconds)。当我不希望这个间隔再次运行时,我将全局变量设置为null。
对于我专门测试的内容(一系列图像一个接一个地渲染),它似乎有效,但我想知道我是否犯了一些偷偷摸摸的错误。
以下是我的代码概述:
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/SportsList"
android:id="@+id/sport_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:layout_gravity="center"/>
答案 0 :(得分:0)
当我不希望这个间隔再次运行时,我将全局变量设置为null。
不,这不起作用。您可以简单地试用您的代码。它将继续执行您的回调,即使您已经丢弃了可能用于停止间隔的标识符。
只需致电clearInterval
:
MyStuff.controls.stop = function () {
clearInterval(MyStuff.controls.animation_timer);
MyStuff.controls.animation_timer = null;
}
答案 1 :(得分:0)
你的例子有用吗?当然,我不明白为什么不。
这是好形式吗?可能不是。你仍然会定期调用MyStuff.controls.animate
,但它什么都不做(假设它正在观察并且有条件地对全局变量起作用)。那是浪费在那里的处理。这是an example的样子。检查控制台的输出。您可以看到该函数仍然运行,它只是表现不同。
我无法想出不使用setInterval
/ clearInterval
的充分理由。
如果您需要确保只运行一个实例,只需将全局变量视为互斥锁即可。例如:
setInterval
并将结果存储在全局变量中。如果它是非空的,则间隔已在运行,因此不调用setInterval
。 clearInterval
,然后将其设置为null。答案 2 :(得分:0)