预加载:即在用户访问页面之前,提前加载好相应的资源;
无缝跳转:
1.使用setInterval轮询,1秒检测一次js线程是否空闲:
// 检测js线程空闲*
const d1 = new Date();
setTimeout(()=>{
const offset = new Date() - d1;
if (offset < 25 ) {
// JS线程空闲
}
}), 20);
如果小于这个值,证明js线程空闲,这样就可以在不影响用户体验的前提下执行预加载(注意:执行预加载的页面需要自行考究,自行判断哪个页面用户点击可能性会更高。一方面又要考究:消耗流量,以及用户体验)
2.检测UI引擎
// 检测UI线程空闲
const d1 = new Date();
requestAnimationFrame(()=>{
const offset = new Date() - d1;
if ( offset < 30 ) {
// UI线程空闲
}
})
(数值根据自身而定)
等到判断页面空闲之时,执行需要预加载的页面;