debounce与throttle
背景
测试同学提了个 bug,在搜索框中疯狂输入文字,不一会儿接口就报错了。这个 bug 实际上就是由于每输入一个字符时,就去请求接口引起的:
const handleSearch = () => {
// ...请求接口
}
<Input onChange={handleSearch} />
解决方法是通过 debounce 来控制输入的频率。
实际上 debounce 和 throttle 这两个概念经常是一起出现,在工作中也常常使用到。在早年接触前端的时候,项目里有 lodash,因此直接使用其提供的 debounce 和 throttle 。而在一些简单的项目里,往往不引入 lodash,这个时候就需要自己实现,于此做个记录。