関数の節流と手ぶれ防止
1873 ワード
関数の流れ
Throttle
// : ,
/*
, , scroll , , , , , ;
, lastTime 。
*/
function throttle(fn, delay) {
//
let lastTime = 0
return function () {
//
let nowTime = Date.now()
if(nowTime - lastTime > delay){
// this
fn.call(this)
//
lastTime = nowTime
}
}
}
function fn(){
console.log('scroll ' + Date.now())
}
document.onscroll = throttle(fn, 2000)
関数ジッパー(debounce)
Debounce
/*
: , , , 。
:
, ,
, ,
,
, ,
*/
function debounce(fn, delay){
//
let timer = null
return function(){
//
clearTimeout(timer)
timer = setTimeout(()=>{
fn()
}, delay)
}
}
function fn() {
console.log(' ' + Date.now())
}
document.getElementById('btn').onclick = debounce(fn, 2000)