Window:requestIdleCallback() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

window.requestIdleCallback() 方法将一个函数排入队列,以便在浏览器的空闲时段调用。这使得开发者可以在主线程上执行后台和低优先级的任务,而不会影响对延迟敏感的事件(例如动画和输入响应)。函数通常以先进先出的顺序调用;但是,如果指定了 timeout 的回调函数为了在超时时间过去之前运行,可能会在必要时乱序调用。

你可以在空闲回调函数中调用 requestIdleCallback() 来调度另一个回调,使其不早于事件循环的下一次通过时发生。

注意:对于必需的工作,强烈建议使用 timeout 选项,否则回调可能需要数秒才能触发。

语法

js
requestIdleCallback(callback)
requestIdleCallback(callback, options)

参数

回调

对一个函数的引用,该函数应该在事件循环空闲时在不久的将来被调用。回调函数会传入一个 IdleDeadline 对象,该对象描述了可用的时间量以及回调是否因为超时期限已过而运行。

options 可选

包含可选的配置参数。目前只定义了一个属性:

超时

如果此参数表示的毫秒数已过且回调尚未被调用,则一个执行回调的任务会被排入事件循环(即使这样做可能会导致负面性能影响)。timeout 必须是一个正值,否则它将被忽略。

返回值

一个 ID,可以通过将其传递给 window.cancelIdleCallback() 方法来取消回调。

示例

请参阅文章 后台任务的协作调度 API 中的完整示例

规范

规范
requestIdleCallback()
# the-requestidlecallback-method

浏览器兼容性

另见