函数防抖
函数防抖就是让某个函数在上一次执行后,满足等待某个时间内不再触发此函数后再执行,而在这个等待时间内再次触发此函数,等待时间会重新计算。
当用户在进行一系列的操作的时候例如输入一串字符,这时如果需求中需要我们去按照用户的输入做请求,比如联想输入时,有可能就会导致多次函数的调用,而事实上我们只需要最后的那个值去发请求,函数防抖就可以解决这个问题。
undersource.js
1 | _.debounce = function(func, wait, immediate) { |
源码中 debounce 函数中的 later 是 setTimeout 中的回调函数,last 是调用后过了多少时间,如果 last 比 await 小就递归调用 later,等待时间重新计算。
如果设置了 immediate 就会立即触发一次函数,之后再计算时间。
另一种实现
1 | // 这个是用来获取当前时间戳的 |
函数节流
函数节流就是让某个函数每间隔一段时间执行防止多次调用
简单版本
1 | function throttle(method, context,wait=100) { |
1 | /** |