js节流函数高级版
节流函数其主要作用就是防止用户在短时间内多次触发该事件。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body><script> function throttle(fn, delay, duration) { var timer = null, begin = new Date(); return function() { var context = this, args = arguments, current = new Date(); clearTimeout(timer); if (current - begin >= duration) { fn.apply(context, args); begin = current; } else { timer = setTimeout(function() { fn.apply(context, args); }, delay) } } }; function demo() { console.log(1) } /*参数说明:第一个参数是要执行的函数,第二个参数是说在500毫秒内连续触发了该函数只执行一次,第三个参数是说每隔200毫秒自动执行一次该函数*/ window.onresize = throttle(demo, 500, 200) </script> </body> </html>
简单高效的方法:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> function throttle(method, context) { clearTimeout(method.tId); method.tId = setTimeout(function() { method.call(context); }, 300); }; function demo() { console.log(1) } window.onresize = function(){
throttle(demo, window)
} </script> </body> </html>
胖胖熊笔记,笔记已迁移