requestIdleCallback和requestAnimationFrame有什么区别?

news2024/11/15 15:39:58

react fiber引起的关注

  • 组件树转为链表,可分段渲染
  • 渲染时可以暂停,去执行其他高优先级任务,空闲时在继续渲染(JS是单线程的,JS执行的时候没法去DOM渲染)
  • 如何判断空闲?requestIdleCallback

区别

  • requestAnimationFrame 每次渲染完在执行,高优先级
  • requestIdleCallback 空闲时才执行,低优先级
  • 都是宏任务,要等待DOM渲染完后在执行

 

<p>requestAnimationFrame</p>

<button id="btn1">change</button>
<div id="box"></div>

<script>
  const box = document.getElementById('box')
  
  document.getElementById('btn1').addEventListener('click', () => {
  let curWidth = 100
  const maxWidth = 400

  function addWidth() {
    curWidth = curWidth + 3
    box.style.width = `${curWidth}px`
    if (curWidth < maxWidth) {
        window.requestAnimationFrame(addWidth) // 时间不用自己控制
    }
  }
  addWidth()
})
</script>

window.onload = () => {
  console.info('start')
  setTimeout(() => {
    console.info('timeout')
  })
  // 空闲时间才执行
  window.requestIdleCallback(() => {
    console.info('requestIdleCallback')
  })
  window.requestAnimationFrame(() => {
    console.info('requestAnimationFrame')
  })
  console.info('end')
}

// start
// end
// timeout
// requestAnimationFrame
// requestIdleCallback

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2110967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

想入门网络安全却不知道怎么入手,看这一篇就够了!

先聊聊&#xff0c;学习网络安全方向会遇到哪些问题&#xff1f; 打基础的时间长 学基础花费了很长的时间&#xff0c;光学语言都有好几门&#xff0c;有的人会止步于学习linux系统及命令的路上&#xff0c;更多的人会停在学习语言上面&#xff1b; 知识点掌握的不够清楚 对…

ML18_EM算法

1. 参数在贝叶斯网络中指的什么 2. 随机变量在贝叶斯网络中指的什么 在贝叶斯网络中&#xff0c;“随机变量”指的是网络中的节点&#xff0c;这些节点代表不确定事件或属性&#xff0c;它们可以取不同的值&#xff0c;并且这些值的概率分布通常未知或部分未知。随机变量可以表…

手搓LLM大模型:从零开始构建大语言模型

在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLMs&#xff09;无疑是最引人注目的明星之一。这些深度神经网络模型的出现&#xff0c;为自然语言处理&#xff08;NLP&#xff09;领域带来了前所未有的变革。那么&#xff0c;这些模型究竟是如何工作的&#xff1f;它…

2024最新推荐10款英文免费录屏软件,想要录制电脑屏幕的你快看过来

你是否曾想过&#xff0c;只需几个简单的步骤&#xff0c;就能将你的电脑屏幕变成一个生动的视频故事&#xff1f;无论是展示你的游戏技巧&#xff0c;还是创建教育视频&#xff0c;录屏软件都能助你一臂之力。但面对市场上琳琅满目的录屏工具&#xff0c;选择一个合适的可能是…

【卡码网C++基础课 19.洗盘子】

目录 题目描述与分析一、栈二、栈的操作三、代码编写 题目描述与分析 题目描述&#xff1a; 在餐厅里&#xff0c;洗盘子的工作需要使用到栈这种数据结构。 假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程&#xff0c;每个盘子都有一个编号。 盘子堆放区操作说明&…

计算机网络-VRRP切换与回切过程

前面我们学习了VRRP选举机制&#xff0c;根据VRRP优先级与IP地址确定主设备与备份设备&#xff0c;这里继续进行主备切换与主备回切以及VRRP抢占模式的学习。 一、VRRP主备切换 主备选举时根据优先级选择主设备&#xff0c;状态切换为Master状态&#xff0c;那当什么时候会切换…

Verilog语法+:和-:有什么用?

Verilog语法:和-:主要用于位选择&#xff0c;可以让代码更简洁。 一、位选择基础 在Verilog中&#xff0c;位选择可以通过直接索引来实现&#xff0c;例如&#xff1a; reg [7:0] data; wire select_a; wire [2:0] select_b; assign select_a data[3]; assign select_b …

【sensor】激光雷达的分类和优缺点(六)

【sensor】镜头评价指标及测试方法&#xff08;一&#xff09; 【sensor】镜头评价指标及测试方法(二)—畸变与分辨率 【sensor】镜头评价指标及测试方法&#xff08;三&#xff09;--------测量原理及3D相机调查 【sensor】镜头评价指标及测试方法【四】————手机摄像头调查…

PAT甲级-1044 Shopping in Mars

题目 题目大意 一串项链上有n个钻石&#xff0c;输入给出每个钻石的价格。用m元买一个连续的项链子串&#xff08;子串长度可为1&#xff09;&#xff0c;如果不能恰好花掉m元&#xff0c;就要找到最小的大于m的子串&#xff0c;如果有重复就输出多个&#xff0c;按递增顺序输…

2.2ceph集群部署准备-软件准备上

系统的选择 操作系统的选取&#xff0c;除了要考虑ceph本身的运行&#xff0c;一般情况下还需要考虑的因素有如下几点 系统本身的稳定性 目前稳定可靠的系统主要是基于x86和arm的linux系统&#xff0c;ceph并不能安装到windows上&#xff0c;分支上&#xff0c;debian和redhat…

sponge创建的服务与dtm连接使用etcd、consul、nacos进行服务注册与发现

本文介绍sponge创建的 transfer 服务(grpc)如何与 dtm 使用服务注册与发现连接的。此示例在同一台机器上运行的服务&#xff0c;默认 IP 地址为 127.0.0.1。如果服务运行在不同的机器上&#xff0c;请在 transfer 和 dtm 的配置文件中&#xff0c;将 127.0.0.1 替换为相应的主机…

TL431精密可调并联稳压器

TL431是一种由德州仪器(TI)公司生产的可调精密并联稳压器&#xff0c;具有较广的工作电压范围&#xff08;2.5V-36V&#xff09;和优异的电流调节能力。作为一种基准电压源&#xff0c;它广泛用于电源设计、稳压电路以及精密参考电源等应用场合。 TL431的内部结构 TL431具有三…

Zotero引用参考文献常见问题及解决方法

一、显示经典版“添加引注”对话框 使用Word插入参考文献时&#xff0c;会出现引用对话框&#xff0c;默认是图1形式&#xff0c;需要搜索对应文章或者点击下拉箭头才显示保存的文献&#xff0c;很不方便。 图 1 想要默认显示文献&#xff0c;在Zotero中左上角的“编辑”→“首…

python环境中,pytorch、tensorflow、opencv 包的安装

知不足而奋进&#xff0c;望远山而前行 —— 24.9.6 tensorflow pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu1.13.1 pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple pytorch pip install torch2.0.0cu118 torchvision0.15…

基于人工智能的音乐情感分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 音乐情感分类是通过对音乐音频信号进行分析&#xff0c;识别出音乐传递的情感&#xff0c;如“愉快”、“悲伤”、“愤怒”等。该技术…

SVD降维

文章目录 一、SVD降维的基本原理二、SVD降维的步骤三、SVD降维的优点四、SVD降维的应用五、代码应用六、SVD降维的局限性 一、SVD降维的基本原理 SVD是线性代数中的一种技术&#xff0c;它将一个矩阵A分解为三个矩阵的乘积&#xff1a;A UΣV^T。其中&#xff0c;U和V是正交矩…

【项目二】C++高性能服务器开发——日志系统(各种适配器)

感谢前人的总结&#xff0c;没有他们&#xff0c;我不会这么快学完&#xff65;ω&#xff65; 知识点备忘录操作记录 知识点备忘录 数据除了打印到控制台还需要打印到本地磁盘和远程日志&#xff0c;所以需要适配器来干这活 涉及多个适配器&#xff0c;打印到控制台的、打印到…

【操作系统】进程同步之Unix域套接字

域套接字是一种高级的进程间通信的方法。 Unix域套接字可以用于同一机器多个进程间通信。 下图分别是服务端和客户端怎么使用域套接字&#xff1a; 服务端&#xff1a; 客户端&#xff1a; 分别编译后可以建立连接同步通信。 提供了单机简单可靠的通信同步服务。 只能在单…

遍历有向网格链路实现

在实际的业务中&#xff0c;我们可能遇到复杂规则&#xff08;多个或与条件组合&#xff09;&#xff0c;复杂链路等类似场景问题&#xff0c;如&#xff1a;规则引擎相关业务&#xff0c;生产任务排期等。 复杂链路示意图如下&#xff1a; 复杂网路链路场景描述 有一个或多…

【Python】pip install速度太慢的多种解决方案

目录 问题描述为什么 pip 速度这么慢&#xff1f;解决方案1. 使用国内镜像源2. 配置多个镜像源3. 使用第三方工具4. 手动下载后本地安装5. 优化网络环境6. 更新 pip 版本 测试效果 问题描述 在使用 Python 进行开发时&#xff0c;我们经常需要使用 pip 来安装第三方库。然而&am…