WorkerGlobalScope: setInterval() 方法

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

* 此特性的某些部分可能存在不同级别的支持。

注意:此功能仅在 Web Workers 中可用。

WorkerGlobalScope 接口的 setInterval() 方法会以固定的时间间隔重复调用一个函数或执行一段代码。

此方法在 window 上下文中也可用:有关 setInterval() 的详细描述,请参阅 Window.setInterval() 页面。

语法

js
setInterval(code)
setInterval(code, delay)

setInterval(func)
setInterval(func, delay)
setInterval(func, delay, arg1)
setInterval(func, delay, arg1, arg2)
setInterval(func, delay, arg1, arg2, /* …, */ argN)

参数

func

一个要每 delay 毫秒执行一次的 函数。第一次执行发生在 delay 毫秒之后。

code

一个可选的语法允许你传入一个字符串而不是函数,该字符串将在每 delay 毫秒时进行编译和执行。出于与 eval() 相同的安全风险原因,这种语法是不推荐的。

delay 可选

计时器在执行指定函数或代码的两次执行之间应该延迟的时间(以毫秒为单位)。如果未指定,则默认为 0。有关 delay 值允许范围的详细信息,请参阅 延迟限制

arg1, …, argN 可选

当计时器到期时,会传递给 func 指定的函数。这些是额外的参数。

返回值

setInterval() 方法返回一个正整数(通常在 1 到 2,147,483,647 的范围内),该整数唯一标识了调用创建的间隔计时器。此标识符,通常称为“间隔 ID”,可以传递给 clearInterval() 以停止指定函数的重复执行。

在相同的全局环境中(例如,特定的窗口或 worker),间隔 ID 保证是唯一的,只要原始计时器仍在活动,就不会被用于任何新的间隔计时器。但是,不同的全局环境维护着它们自己的独立间隔 ID 池。

请注意,setInterval()setTimeout() 共享相同的 ID 池,并且 clearInterval()clearTimeout() 在技术上可以互换使用。但是,为了清晰起见,在维护代码时,您应该尽量始终匹配它们以避免混淆。

注意: delay 参数会被转换为一个有符号 32 位整数。由于它在 IDL 中被指定为有符号整数,这实际上将 delay 限制为 2147483647 毫秒,大约 24.8 天。

示例

请参阅 setInterval() 以获取示例。

规范

规范
HTML
# dom-setinterval-dev

浏览器兼容性

另见