我在移动端页面里有个数据处理函数,一跑就卡顿好几秒,Chrome DevTools 显示是 Long Task。试过用 setTimeout 分片,但效果不明显,还有啥靠谱的办法吗?
这是我的处理逻辑:
function processData(data) {
const result = [];
for (let i = 0; i < data.length; i++) {
// 模拟复杂计算
result.push(expensiveComputation(data[i]));
}
updateUI(result);
}
requestIdleCallback代替setTimeout,它能在浏览器空闲时执行任务,比 setTimeout 靠谱多了:如果数据量特别大或者计算特别重,直接上 Web Worker 把计算挪出主线程,这才是根治办法。