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

西安网站代维护最新网站建设合同

西安网站代维护,最新网站建设合同,游戏开发需要多少钱,极品教师韩剧在线观看第一集React 任务池 不同的fiber任务有不同的优先级,为了用户体验,React需要先处理优先级高的任务。 为了存储这些任务,React中有两个任务池: // Tasks are stored on a min heap var taskQueue []; // 存储立即要执行的任务 var tim…

React 任务池

不同的fiber任务有不同的优先级,为了用户体验,React需要先处理优先级高的任务。
为了存储这些任务,React中有两个任务池:

// Tasks are stored on a min heap
var taskQueue = []; // 存储立即要执行的任务
var timerQueue = [];  // 存储可以延迟执行的任务

源码中任务的初始结构:

var newTask = {id: taskIdCounter++, // 标记任务idcallback, // 回调函数priorityLevel,startTime,   // 任务开始时间,时间点expirationTime, // 过期时间,时间点sortIndex: -1, // 排序(取值来自过期时间,因此值越小,优先级越高)
};

React 中一旦来了新任务,就会先用currentTime记录当前时间(performance.now())或Date.now(),如果任务中有delay参数,那么任务开始执行时间startTime = currentTime + delay。接下来通过startTime > currentTime 如果成立,证明任务是可以延期的,那么任务进入timerQueue,否则进入taskQueue。

React中任务调度

如果找到优先级最高的任务?
以taskQueue为例, 它是动态的任务池。Array.sort对它排序可行,但不是最优方案,每次sort,平均时间复杂度是nlog(n)。可以考虑小顶堆。
为什么不是大顶堆呢?因为taskQueue的newTask中的排序用的是sortIndex,这个值取自过期时间expirationTime,意味着优先级越高的任务越需要立马执行,那么过期时间自然就越小了(优先级越高,过期时间越小。) 当然也有可能两个任务的过期时间一样,那这时就要看谁先进的任务池了,也就是newTask中的id,每次来了新任务,id都会加1。
所以React源码中任务比价优先级的函数如下:

function compare(a,b){const diff = a.sortIndex - b.sortIndex;return diff !== 0 ? diff : a.id - b.id;
}

用到最小堆,就是把taskQueue做成最小堆的数据结构,然后在执行任务的时候,取最小堆的最小任务,如果任务处理完毕,那么需要把这个任务从taskQueue中删除,并重新调整剩下的任务池,依然保证它是最小堆的数据结构。当然,往taskQueue中插入新任务的时候,也要调整taskQueue,保证新的任务池仍是最小堆。

最小堆

http://www.yayakq.cn/news/629531/

相关文章:

  • 个人建网站允许吗wordpress 知识库主题
  • 制作网站得多少钱vps 网站异常
  • 网站界面设计和ios移动界面设计的区别开网店的流程和步骤
  • 网站广告位设计无法使用wordpress
  • 木门行业网站该怎么做网站免费广告
  • 网站开发工作好找吗企业网站建设工作总结
  • 遂宁网站建设哪家好做视频的网站那几个盈利了
  • 网站快速上排名方法网站备案名称必须是公司名
  • 资金盘网站开发多少钱设计公司取名字大全集
  • 沈阳网站建设搜q479185700外包网有哪些
  • php 网站缩略图建立网站线上营销
  • 爱网站关键词查询工具wordpress+grace+破解
  • 网站开发 定制 合同郑州模板网站
  • 简述网站开发平台及常用开发工具网页设计psd
  • 广西住房和城乡建设厅网站首页软件开发工程师就业前景
  • 网站开发亿玛酷技术一元云够网站建设
  • 如何做网站链接使用江阴市城乡建设网站
  • 赣州制作网站企业专业建站团队
  • 网站分为哪些类型crm管理系统的好处
  • 邵东微网站建设亚洲电视全球运营中心
  • 网站页面效果图怎么做的网站有哪些后台
  • 做百度移动端网站网页浏览器打开
  • 淘宝客单页网站怎么做用dw做销售网站
  • 网站中怎么做图片的变换企拓客软件多少钱
  • 有没有做线播放网站宁波建设教育培训网
  • 企业网站 域名注册告诉搜索引擎网站建设中
  • 鹏鸿生态板官方网站开发区代理购物网站多少钱
  • 深圳网站运营wordpress自定义链接不能用
  • 云服务器放网站快么兰州网站建设搜王道下拉
  • 搭建wordpress站点wordpress ldap外部登录认证