# 防抖函数
debounce(func, delay, [immediate=false])
# 说明
创建一个 debounced
防抖函数,该函数会从上一次被调用后,延迟 delay
毫秒后调用 func
方法。
返回的 debounced
防抖函数提供一个 cancel
方法取消延迟的函数调用
immediate
表示先调用后等待 还是 先等待后调用
# params
{Function}
: 需要防抖的函数{number}
: 防抖时间{boolean} [immediate=false]
: 是否立即执行
# return
{Function}
: 返回新的 debounced
防抖函数。
# eg
// 这个函数会在滚动停止后的200ms后执行
window.onscroll = debounce(() => {
console.log('这个函数会在滚动停止后的200ms后执行')
}, 200)
// 这个函数会立即执行一次,并且在停止滚动后的200ms再次滚动不会执行
window.onscroll = debounce(() => {
console.log('这个函数会立即执行一次,并且在停止滚动后的200ms再次滚动不会执行')
}, 200, true)
// cancel后,这个函数不会在滚动停止后的200ms后执行
const f = debounce(() => {
console.log('这个函数不会在滚动停止后的200ms后执行')
}, 200)
window.onscroll = () => {
f();
f.cancel()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19