requestIdleCallback 在 Safari 里为啥不生效?
我在项目里用 requestIdleCallback 做非关键任务的延迟执行,Chrome 跑得好好的,结果 Safari 上完全没反应,控制台也没报错。
查了下发现 Safari 好像一直没支持这个 API?那我是不是得加个 polyfill?但不确定怎么判断兼容性,或者有没有更稳妥的替代方案。
现在代码是这样写的:
if (window.requestIdleCallback) {
requestIdleCallback(() => {
console.log('执行低优先级任务');
});
} else {
setTimeout(() => {
console.log('降级执行');
}, 0);
}
window.requestIdleCallback但调用时没写 window。直接上 polyfill,放到代码最前面:
这样就能统一调用
requestIdleCallback了,Safari 会自动走 polyfill,Chrome 原生支持的不受影响。试试看。