受到设备性能特征的影响。在现代 iPhone 上需要 05 毫秒的时间在诺基亚 2 上可能需要 10 毫秒。用户设备的性能是完全不可预测的。 注RAIL 作为指导框架已有 6 年了。值得注意的是无论用户显示器的本机刷新率是多少60fps 实际上都是一个占位符值。例如一些较新的 Pixel 手机配备 90Hz 屏幕iPad Pro 配备 120Hz 屏幕将帧预算分别降低至 111ms 和 83ms。 更复杂的是除了测量回调之间经过的时间量之外没有什么好的方法可以确定应用程序运行的设备的刷新率reuestAnimationFrame。* JavaScript JavaScript 被设计为与浏览器的主渲染循环同步运行。几乎每个网络应用程序都依赖于这个模型。该设计的缺点是少量缓慢的 JavaScript 代码可能会阻止浏览器的渲染循环继续。他们步调一致如果一个人没有完成另一个人就无法继续。
为了允许将运行时间较长的任务集成到
中在回调和后续承诺的基础上建立了异步模型。 为了保持应用程序流畅您需要确保 JavaScript 代码与浏览器必须执行的其他任务(样式 阿联酋电话号码列表 布局绘制等)相结合的持续时间不会超过设备的帧预算。为了保持应用程序的响应能力您需要确保任何给定的事件处理程序花费的时间不超过 100 毫秒才能在设备屏幕上显示更改。在开发过程中在您自己的设备上实现这一点可能很困难但在您的应用程序可能运行的每台设备上实现这一点似乎是不可能的。 这里通常的建议是对代码进行分块或其同级措辞让位于浏览器。基本原理是相同的为了让浏览器有机会发送下一帧您将代码正在执行的工作分解为更小的块并将控制权传递回浏览器以允许它在这些块之间执行工作。 有多种方法可以屈服于浏览器但没有一种方法是很好的。
最近提出的任务调度程序 API旨在直接公开此功能
然而即使我们有一个用于产生类似await yieldToBrowser(或类似的东西)的 API该技术本身也是有缺陷的为了确保你不会超出你的框架预算你需要以足够小的块来工作以便你的代码每帧至少产生一次。 同时过 B2C 电话列表 于频繁产生的代码可能会导致调度任务的开销对应用程序的整体性能产生净负面影响。现在将其与设备不可预测的性能结合起来我们必须得出这样的结论不存在适合所有设备的正确块大小。当尝试分块UI 工作时这尤其成问题因为屈服于浏览器可能会呈现部分完整的界面从而增加布局和绘制的总成本。 认识图像优化Addy Osmani 的新实用指南用于在网络上优化和提供高质量图像。一切尽在一本528 页的书中。 跳转至目录 ↬ 功能面板 网络工作者 有一种方法可以打破与浏览器渲染线程的同步运行。我们可以将一些代码移动到不同的线程。