requestIdleCallback

本文介绍了浏览器的requestIdleCallbackAPI,它允许开发者在浏览器空闲时执行低优先级任务。文章详细解释了API的工作原理、回调机制、timeout选项以及兼容性处理,并给出了使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

requestIdleCallback

插入一个函数,这个函数将在浏览器空闲时期被调用。会返回一个ID。提供给Window.cancelIdleCallback(ID) 方法来结束回调

requestIdleCallback(callback, options)
//callback  函数会接收到一个名为 IdleDeadline 的参数
//options 一个对象。
//options 选项:  timeout:如果指定了 timeout,并且有一个正值,而回调在 timeout 毫秒过后还没有被调用,那么回调任务将放入事件循环中排队,即使这样做有可能对性能产生负面影响。

兼容性

window.requestIdleCallback = window.requestIdleCallback || function (handler){
  let startTime = Date.now();
  return setTimeout(function(){
    handler({
      didTimeout: false,
      timeRemaining: function(){
        return Math.max(0, 50 - (Date.now() - startTime));
      }
    })
  }, 1)
}
window.cancelIdleCallback = window.cancelIdleCallback || function(id){
  clearTimeout(id);
}

示例

if(this.requestId){
  cancelIdleCallback(this.requestId);
  this.requestId = null;
}
let obj = {list: []};
let addFun= (deadline) => {
  while (deadline.timeRemaining() > 0 && i < list.length){
    obj.list.push(list[i]);
    i++;
  }
  if(i < list.length){
    this.requestId = requestIdleCallback(addFun);
  }
}
this.requestId = requestIdleCallback(addFun)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值