概述`isInputPending()` 返回是否有用户输入待处理。可在循环或长任务中检查并分片执行,避免阻塞输入响应与滚动。用法/示例function heavyWork(items) {
let i = 0
function step() {
const deadline = performance.now() + 8
while (i < items.length && performance.now() < deadline) {
doUnit(items[i++])
if (navigator.scheduling?.isInputPending?.()) break
}
if (i < items.length) setTimeout(step, 0)
}
step()
}
工程建议与 `scheduler.postTask`/`rAF` 协作,为关键交互保留帧预算。在滚动与输入密集页面启用让步检查;在不支持环境直接进行时间片分片。记录让步触发频率评估策略效果,避免过度让步造成吞吐下降。参考与验证WICG:Scheduling APIs — https://wicg.github.io/scheduling-apis/web.dev:isInputPending — https://web.dev/articles/isinputpending

发表评论 取消回复