参考:博客园 www.cnblogs.com/youma/p/105… 唐吉sir 日常过程种,某些事件做复杂计算频繁调用回调函数很可能会造成页面的卡顿,这时候我们希望把多次计算合并成一次,只操作一个精确点,js把这种方式称为debounce(防抖)、和throtttle(节流)
函数防抖
当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次。 用一句总结就是: 将多次触发操作变成最后一次执行。
函数节流
当持续触发事件时,保证在一定时间内只调用一次事件处理函数。 意思就是说,假设一个用户一直触发这个函数,且每次触发小于既定值,函数节流会每隔这个时间调用一次。
用一句话总结就是:将多次操作变成每隔一段时间执行。
实现函数节流有三种方法:时间戳、定时器、还有最后一种更加完备的。 (个人觉得并不是三种方法,只是实现细节比较好)
时间戳实现:
定时器实现: