场景描述
简单来说,懒执行(Lazy Execution)就是将某些逻辑延迟到使用时再计算。
该技术可以用于首屏优化,对于某些耗时逻辑并不需要在首屏就使用的,就可以使用懒执行。懒执行需要唤醒,一般可以通过定时器或者事件的调用来唤醒。
通用方案
某一业务功能如果被设置了懒执行,则需要满足特定条件后该功能才会被初始化(唤醒)。
因此,从触发(唤醒)方式上来看,懒执行的通用方案可以大致上分为两个思路:自动唤醒和手动唤醒
自动唤醒
- 自动唤醒的核心思想是轮询,实现方法则是依靠 setInterval() 方法。
- 首先需要定义判断条件 A,作为某些耗时逻辑的唤醒值。
- 其次,声明一个监听函数 monitor() 作为 setInterval() 的回调函数,其基本思想是根据唤醒条件 A 的满足与否来决定是否执行唤醒动作:若是则唤醒,并 clearInterval 跳出轮询,否则继续轮询,直到条件满足。
从上述分析来看,自动唤醒的方案需要轮询作为支撑,本身占用一定资源。因此自动唤醒应当被用于大型逻辑模块的懒执行方案中,否则有可能在性能上会得不偿失。
手动唤醒
- 手动唤醒主要应用于页面的交互场景下,也就是通过监听用户在页面内的
click
、hover
或scroll
等基本交互行为来触发唤醒动作。
手动唤醒无需设置唤醒条件,也就不需要定义轮询函数来监听,完全由用户手动控制某些耗时逻辑的触发,更加节省资源。因此中小型模块的懒执行方案可以选用手动唤醒方案。