这个API目的是想让网页主线程在空闲的时候执行一些代码。 在没有这个API之前,通常使用异步的方法比如setTimeout进行延迟加载,延迟的时间是预估的。
能不能有什么判断条件准确的判断空闲状态呢? 另外一种方法是收集代码执行结束信息然后结束的时候触发这个条件,这样逻辑在具体上可能会比较复杂。
然后关于性能优化setTimeout通常是分块加载,预估一个让必要的优先加载完之后的一个时间。而requestIdleCallback是会在一帧的空闲时间里去执行代码,这点是不同的。不过可以结合一下,setTimeout的时间毕竟是预估的,在里面可以考虑再加requestIdleCallback。
性能的问题体现在规模的问题,数量多,体积大,主线程执行的代码时间长导致的空间占用大、耗时长的问题。而前端的优化策略主要是减少主线程的耗时,在全链路上减少一些数量、体积、耗时长的问题。
另外,在浏览器目前没有API可以判断当前网页是否有正在发送的网络请求。这些网络请求不仅是ajax还有一些没有通过ajax发出的网络请求。