Mardanjan / Blog

学习笔记(在issues里),一些小demo的源码在这里,demo在线地址会持续更新
1 stars 0 forks source link

前端性能优化之:防抖和节流 #37

Open Mardanjan opened 4 years ago

Mardanjan commented 4 years ago

节流概念 Throttle

防抖的概念 Debounce

节流实现

防抖实现

节流和防抖的伪理论

Mardanjan commented 4 years ago

自己写的防抖的例子

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>防抖</title>
</head>
<body>
    <input type="text" name="" id="input">
</body>
<script>
    var input = document.querySelector('#input')
    input.oninput = function() {
        debounce()
    }
    var timer
    function debounce () {
        clearTimeout(timer)
        timer = setTimeout( () => {
            console.log(input.value)
        }, 500)
    }
</script>
</html>
Mardanjan commented 4 years ago

自己写的节流的例子

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" name="" id="input">
</body>
<script>
    var input = document.querySelector('#input')
    var timer = true
    input.oninput = function () {
        if (!timer) {return}
        timer = false
        setTimeout(() => {
            console.log('执行了')
            timer = true
        }, 200);
    }

</script>
</html>