当前位置: 首页 > news >正文

网站开发说明文档杨凌区住房和城乡建设局网站

网站开发说明文档,杨凌区住房和城乡建设局网站,专门做家具的网站,基于asp.net电子商务网站开发实践中的关键技术和应用时间分片 react的任务可以被打断#xff0c;其实就是基于时间分片的人眼最高能识别的帧数不超过30帧#xff0c;电影的帧数差不多是在24浏览器的帧率一般来说是60帧#xff0c;也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染#xff…时间分片 react的任务可以被打断其实就是基于时间分片的人眼最高能识别的帧数不超过30帧电影的帧数差不多是在24浏览器的帧率一般来说是60帧也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染运算渲染运算渲染在浏览器里面一个运算加上一个渲染就是一帧总的来讲可以理解为下面这张图 比如 frame 是一帧一个 Frame 就是16毫秒左右黑色部分是浏览器的渲染蓝色部分是js的运算在16毫秒以内(一帧), 浏览器会重新渲染画面然后再加上JS的一轮事件循环的执行根据任务队列循环下去一秒 60 帧每一帧都是 js的执行 浏览器的渲染但是, js它是单线程的, 会阻塞浏览器渲染, 假如 js执行时间超长占了 3 ~ 4帧js执行的时候浏览器是不能渲染的那这个时候会有页面卡顿的感觉 实际上这个时候是 js 在执行这个也是react它去递归渲染的时候的问题递归渲染它就是属于长进程相当于在 render 的时候 js 一直把渲染进程给卡住 这个是很苦恼的问题所以诞生了fiber架构, react希望能够把任务分片处理这个时候就提到了一个概念就是 fiber reconciler 要做的事情它如何让我们把时间分片然后让又让浏览器不卡顿的呢 其实特别的巧妙谷歌浏览器底层提供的一个东西叫做 requestIdleCallback前面说到一帧(16ms左右) 是 渲染 js的执行有时候浏览器比较空闲有可能一帧不需要 16ms可能需要6ms, 那剩下的10ms可以执行长任务当剩下的10ms用完可以把浏览器的渲染权利再还给浏览器这个时候进入下一帧的浏览器的画面继续渲染渲染完之后又有剩余时间接着再执行这个长进程简单来说就是把长进程拆分成一个个很小的任务它利用浏览器每一帧的空闲时间去执行这样就实现了任务的打断而且还不阻塞浏览器的渲染 也就是说本来一个任务要执行1秒但是实际上react的fiber架构可能让这个1秒执行的时间更长因为任务的拆分其实是增加了这个计算的开销的但是它却是在我们每一帧的空闲时间去执行的虽然执行的整体时间可能变长但是让用户的感觉没有那么卡顿所以它的体验是提升了的参考之前 React 16的时间片https://blog.csdn.net/Tyro_java/article/details/135586572 关于 requestIdleCallback 文档https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestIdleCallback window.requestIdleCallback() 方法插入一个函数这个函数将在浏览器空闲时期被调用 这使开发者能够在主事件循环上执行后台和低优先级工作而不会影响延迟关键事件如动画和输入响应 函数一般会按先进先调用的顺序执行然而如果回调函数指定了执行超时时间timeout则有可能为了在超时前执行函数而打乱执行顺序 requestIdleCallback(callback) requestIdleCallback(callback, options) callback 一个在事件循环空闲时即将被调用的函数的引用。函数会接收到一个名为 IdleDeadline 的参数这个参数可以获取当前空闲时间以及回调是否在超时时间前已经执行的状态 options 可选 包括可选的配置参数。具有如下属性 timeout 如果指定了 timeout并且有一个正值而回调在 timeout 毫秒过后还没有被调用那么回调任务将放入事件循环中排队即使这样做有可能对性能产生负面影响 返回值是一个ID可以把它传入 Window.cancelIdleCallback() 方法来结束回调 requestIdleCallback 和 requestAnimationFrame 的区别 1 react fiber 引起的关注 组件树转换为链表可分段渲染渲染时可以暂停去执行其他高优先任务空闲时再继续渲染如何判断空闲requestIdleCallback 2 区别 requestAnimationFrame 每次渲染完都会执行高优 requestIdleCallback 空闲时才会执行低优 let curWidth 100 const maxWidth 400function addWidth() {curWidth curWidth 3box.style.width ${curWidth} pxif (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)执行顺序 startendtimeout 优先级更高requestAnimationFrame 宏任务优先级较高requestIdleCallback 宏任务优先级较低 总结 两者都是宏任务需要等待dom渲染完才会执行
http://www.w-s-a.com/news/161493/

相关文章:

  • 简单的招聘网站怎么做购物网站功能报价
  • 哪个网站做中高端衣服建设自己网站的流程
  • 网站建设概况做网站的是怎么赚钱的
  • 网站发布信息的基本流程现在都不用dw做网站了吗
  • 赣州热门网站深圳龙岗做网站的公司
  • 中国最大的建站平台广告传媒公司取名
  • 深圳网站设计公司专业吗学动漫设计后悔死了
  • 企业网站形象建设网站开发入职转正申请书
  • 网站设计步骤济南建设网中标公告
  • 石佛营网站建设wordpress关健词
  • 您的网站空间即将过期建站 discuz
  • 上海简站商贸有限公司福州哪家专业网站设计制作最好
  • 博客网站开发流程苏州专业做网站的公司哪家好
  • 四川手机网站建设西安 网站 高端 公司
  • 织梦大气绿色大气农业能源化工机械产品企业网站源码模版建筑工程知识零基础
  • 广州番禺网站公司v2017网站开发
  • 微信公众号怎么做微网站wordpress和dz
  • 西部数码网站管理助手 301福州搜索优化实力
  • 响应式网站介绍页面模板功能找不到
  • 公司网站如何seo自己做资讯网站
  • 天津网站建设软件开发招聘企业信用信息查询公示系统上海
  • 网站备案中做正品的网站
  • 网站建设0基础学起青海企业网站开发定制
  • 网站定制项目上海快速建站
  • 大型视频网站建设方案东莞企业网站建设开发
  • 西安php网站制作可以用AI做网站上的图吗
  • 网站开发工程师和前端企业网络推广公司
  • 泉州开发网站的公司有哪些电脑网页翻译
  • 河北省建设机械会网站首页刚做的网站怎么收录
  • 什么网站专门做自由行的framework7做网站