大家好,我是卡顿。
作为前端,您必须熟悉稳定的两个概念()和thobbing()。
在中间,基于新的并发特征,抗样品函数的天然实现。
让我们谈谈今天如何实现这一点。
欢迎加入人类的高质量前端 - 前端框架的研究小组,以带来飞行
它是一个新的本地,用于执行一些优先级的更新。
我们中有两个状态,并控制输入框的内容。
当触发输入框事件时,它将被触发并同时更改状态。
将传递给组件。周期消耗的时间以在整个周期中增加组件:
因此,在输入框中输入内容时显然会感到卡住。
在线样本地址
有理由将状态同时触发,并且在视图中的显示应同步。
但是,实际上,输入框连续进入段落(即状态在视图中不断变化),然后才能更改一次。
如下图所示,输入框在开始时没有内容,对于0:
输入框输入一段文本后,它变为1:
这种效果就像:包装的更新具有反施加的效果。
如何实现?
有一组更新优先级机制,由不同位置触发的更新具有不同的优先级。优先级的定义基础与用户感知一致,例如:
那么,您如何表示优先级?使用31位二进制。
例如,同步优先级和默认优先级定义如下:
值越小,优先级就越大。
那么,您是否每次选择一个,然后在所有组件中执行此优先更新?
否。如果您只能为每个更新选择一个,那么灵活性太糟糕了。
因此,实际情况是:每次更新,一种到多种形式的一个电池,然后执行包含本批次中包含的相应更新的所有组件
这称为批次。
例如,将合成以下代码:
可以看出,该机制本质上是多种操作,可以设计出非常灵活的操作。
在此基础上,有一种称为(纠缠)的机制。
指的是一种关系,如果纠缠在一起,则必须带来某个更新选择。
换句话说,它们彼此纠缠在一起,他们在一起死亡。
此外,如果您有纠缠,目前有纠缠,它也将被纠缠。
那么机制之间的关系是什么?
在软件包恢复中触发的更新是优先级之一。
其中有16个,其中:to:
并将发生纠缠。
在我们中,每个执行将创建两个更新:
在:
在输入框中重复输入文本时,将重复执行上述过程。区别是:
为了防止由于优先级较低而执行某个更新,有一个过期的机制:每个更新都有一个到期时间。如果他不在到期时间内执行它,那么他将到期。
该更新将同时执行(也就是说,他的优先级与相同的优先级相同)
在我们的示例中,将创建许多纠缠。
一段时间后,其中一项到期,因此他优先考虑到同一水平并立即执行。
而且由于这与他人纠缠在一起,因此他们将一起执行。
这表明为:输入框的内容已输入,但是在一段时间后,视图中显示的数字将会更改。
今天,我们讨论了一些内部实施并参与其中:
最有趣的是,由于计算机的性能不同,浏览器的帧速率将会改变,因此稳定图像稳定的效果将在不同的计算机中动态调节。
这等同于您不需要手动设置的时间参数,并且将根据计算机性能动态调整。
原始:https://juejin.cn/post/7097406514360483877