window方法:requestIdleCallback()
requestIdleCallback()方法
在使用requestIdleCallback()方法之前,请仔细检查浏览器兼容性表。
该window.requestIdleCallback()方法将在浏览器的空闲时段内对要调用的函数进行排队。这使开发人员能够在主事件循环上执行后台和低优先级工作,而不会影响延迟关键事件,如动画和输入响应。函数通常以先进先出顺序调用;但是,如果需要,具有指定timeout的回调可能被调用为无序,从而在超时发生之前运行回调。
您可以在空闲回调函数内调用requestIdleCallback(),以便在下一次通过事件循环时安排另一个回调。
强烈建议使用一个timeout选项来完成所需的工作,否则在触发回调之前可能需要多秒。
requestIdleCallback()方法语法
var handle = window.requestIdleCallback(callback[, options])
返回值
一个ID,可用于通过将回调传递给window.cancelIdleCallback()方法来取消回调。
参数
callback
- 当事件循环空闲时,应该在不久的将来调用的函数的引用。回调函数传递一个
IdleDeadline
对象,该对象描述可用时间量以及是否因为超时期限到期而运行了回调。 options
(可选)- 包含可选的配置参数。目前只定义了一个属性:
timeout
:如果timeout
是指定的,具有正值,并且在timeout毫秒已经过去的时间里,回调还没有被调用,则回调将在接下来的空闲时间被调用,即使这样做会导致负面的性能影响。
规范
规范 | 状态 | 注释 |
---|---|---|
后台任务的协同调度
|
Proposed Recommendation
|
初步定义 |
浏览器兼容性
电脑端 | 移动端 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome
|
Edge
|
Firefox
|
Internet Explorer
|
Opera
|
Safari
|
Android webview | Chrome for Android
|
Edge Mobile | Firefox for Android
|
Opera for Android
|
iOS Safari | |
基本支持 (试验)
|
支持:47 | 不支持 | 支持:55 |
不支持 | 支持:34 | 不支持 | 支持:47 | 支持:47 | 不支持 | 支持:55 |
? | 不支持 |