节流与防抖是老生常谈的话题…二者的区别总是搞不大清。今天用大白话解释下:
二者都是在事件多次触发的时候。避免触发太多的回调函数。进而提高性能。
比如输入框会监听用户的keyup事件,进而调用后台接口,返回数据。但如果输入太快太多,会频繁调用接口,导致接口压力比较大。。
其实二者的根本区别是触发时机不同
- 防抖是当事件不再触发的n秒后执行事件。假如你在输入框内持续输入,那么一次接口都不会调用,直到你不输入了,过了n秒,才调用接口。
- 节流是当事件触发之后的n秒后才能再次触发。假如你仍旧持续输入,那么接口会按照n秒的间隔间替的调用。
节流简单说好像水闸,无论你来多少水,我总按照我的流量来输出,恰如其名。
防抖简单说就是你只是关心最终的结果,中间的抖动都被过滤。