window.requestIdleCallback()会在浏览器空闲时期依次调用函数, 这就可以让开发者在主事件循环中执行后台或低优先级的任务,而且不会对像动画和用户交互这样延迟敏感的事件产生影响。函数一般会按先进先调用的顺序执行,然而,如果回调函数指定了执行超时时间timeout,则有可能为了在超时前执行函数而打乱执行顺序。

您可以在空闲回调函数中调用requestIdleCallback(),以便在下一次通过事件循环之前调度另一个回调。

语法

var handle = window.requestIdleCallback(callback[, options])

返回值

一个无符号长整数,可以把它传入 Window.cancelIdleCallback() 方法,来结束回调

参数

callback
一个在事件循环空闲时即将被调用的函数的引用。函数会接收到一个名为 IdleDeadline 的参数,这个参数可以获取当前空闲时间以及回调是否在超时时间前已经执行的状态。
options 可选
包括可选的配置参数。具有如下属性:
  • timeout:timeout 值被指定为正数时,当做浏览器调用 callback 的最后期限。它的单位是毫秒。当指定的时间过去后回调还没有被执行,那么回调会在下一次空闲时期被强制执行,尽管可能会对性能造成负面影响。

规范

Specification Status Comment
Cooperative Scheduling of Background Tasks Proposed Recommendation Initial definition.

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 47 未实现[1] 未实现 34 未实现
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 47 ? ? ? ? ? 47

[1] On track for release in Firefox 52, see bug 1198381.

文档标签和贡献者

此页面的贡献者: xlaoyu, mdnwebdocs-bot, ZSI2017, dinger, samuel1112, yiyizym, hepeguo
最后编辑者: xlaoyu,