window.requestIdleCallback()会在浏览器空闲时期依次调用函数, 这就可以让开发者在主事件循环中执行后台或低优先级的任务,而且不会对像动画和用户交互这样延迟触发而且关键的事件产生影响。函数一般会按先进先调用的顺序执行,除非函数在浏览器调用它之前就到了它的超时时间。

语法

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

返回值

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

参数

callback
一个即将被调用的函数的引用。函数会接收到一个名为 deadline 的参数,它具有如下属性 :
  • timeRemaining: 一个返回DOMHighResTimeStamp的函数的引用。
  • didTimeout: 布尔型,如果 callback 在空闲时间被客户端执行,它的值为 false,其他情况它的值为 true (例如:options 中给了超时时间,并且在超时过期时仍没有足够的空闲时间)。
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.

文档标签和贡献者

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