赞
踩
文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestIdleCallback
window.requestIdleCallback() 方法插入一个函数,这个函数将在浏览器空闲时期被调用
这使开发者能够在主事件循环上执行后台和低优先级工作,而不会影响延迟关键事件,如动画和输入响应
函数一般会按先进先调用的顺序执行,然而,如果回调函数指定了执行超时时间timeout,则有可能为了在超时前执行函数而打乱执行顺序
requestIdleCallback(callback)
requestIdleCallback(callback, options)
返回值是一个ID,可以把它传入 Window.cancelIdleCallback()
方法来结束回调
1 )react fiber 引起的关注
2 ) 区别
requestAnimationFrame 每次渲染完都会执行,高优
requestIdleCallback 空闲时才会执行,低优
let curWidth = 100
const maxWidth = 400
function addWidth() {
curWidth = curWidth + 3
box.style.width = `${curWidth} px`
if (curWidth < maxWidth) {
widndow.requestAnimationFrame(addWidth) // 时间不用自己控制 高优先级
widndow.requestIdleCallback(addWidth) // 时间不用自己控制 繁忙时不会执行
}
}
addWidth()
对比
console.info('start')
window.requestIdleCallback(()=>{
console.log('requestIdleCallback')
})
window.requestAnimationFrame(()=>{
console.log('requestAnimationFrame')
})
setTimeout(()=>{
console.log('setTimeout')
})
console.info('end')
执行顺序
总结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。