用途:审查并优化会长时间占用浏览器主线程的 JavaScript 代码,避免阻塞点击、键盘事件与渲染。资料指出任何超过 50 毫秒的 JS 任务都会阻塞主线程,影响 Interaction to Next Paint(INP)。
主要能力:识别同步循环、递归树遍历、批量 DOM 更新等可能超过 50 毫秒的操作;将长同步任务重构为分块执行,在块之间通过 scheduler.yield() 让出主线程,使浏览器先处理排队输入再继续;在不支持 scheduler.yield() 的环境使用基于 MessageChannel 的 polyfill;可解释 50 毫秒阈值对 INP 的影响、scheduler.yield() 的工作方式,以及它相较 Web Workers 的适用时机。
使用方式:作为代码审查规则,检查事件处理函数、数据转换函数和初始化例程中的同步大集合循环,标记总工作量可能超过 50 毫秒的循环。完整实现细节、代码示例与框架相关指导见 references/rule.md。规则页:https://frontendchecklist.io/en/rules/javascript/scheduler-yield。
适用场景:大数据集同步处理、树结构递归、批量 DOM 变更等前端性能优化与评审。
限制:资料未提供具体价格、平台兼容范围与实测效果数据。