所在的位置: 前端 >> 前端介绍 >> 实现ReactrequestIdle

实现ReactrequestIdle

京东运营求职招聘微信群 http://jdsshang.com/shenghuo/24910.html
大厂技术坚持周更精选好文1.前言

Elab掘金:ReactFiber架构浅析[1]已对ReactFiber架构实现进行了浅析。React内部实现了该方法requestIdleCallback,即一帧空闲执行任务,但Schedular+Lane模式远比requestIdleCallback复杂的多。这里我们先通过了解requestIdleCallback都做了些什么,再尝试通过requestAnimationFrame+MessageChannel来模拟React对一帧空闲判断的实现。

2.requestIdleCallback

window.requestIdleCallback()[2]

2.1概念理解

图:简单描述帧生命周期

RequestIdleCallback简单的说,判断一帧有空闲时间,则去执行某个任务。

目的是为了解决当任务需要长时间占用主进程,导致更高优先级任务(如动画或事件任务),无法及时响应,而带来的页面丢帧(卡死)情况。

故RequestIdleCallback定位处理的是:不重要且不紧急的任务。

RequestIdleCallback参数说明:

window.requestIdleCallback(callback[,options]);callback为要执行的回调函数,该函数会接收deadline作为对象。

//回调函数接收deadlinetypeDeadline={timeRemaining:()=number//当前剩余的可用时间。即该帧剩余时间。didTimeout:boolean//是否超时。}//接收回调任务typeRequestIdleCallback=(cb:(deadline:Deadline)=void,options?:Options)=number2.2实现demo

requestIdleCallback处理任务说明:

Demo:


转载请注明:http://www.aierlanlan.com/rzfs/176.html