Skip to Content

debounce&throttle(防抖与节流)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>debounce&throttle</title> </head> <body> debounce:<span id="debounce"></span> <br /> throttle:<span id="throttle"></span> <br /> <input type="text" id="input" /> <script> const debounce = (fn, delay) => { let timer; return function (...args) { timer && clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, args); }, delay); }; }; const throttle = (fn, delay) => { let timer; return function (...args) { if (!timer) { timer = setTimeout(() => { timer = null; fn.apply(this, args); }, delay); } }; }; const debounce_output = document.getElementById("debounce"); const throttle_output = document.getElementById("throttle"); const input = document.getElementById("input"); const debounceLog = debounce((text) => { debounce_output.innerText = text; }, 1000); const throttleLog = throttle((text) => { throttle_output.innerText = text; }, 1000); input.addEventListener("input", (e) => { debounceLog(e.target.value); throttleLog(e.target.value); }); </script> </body> </html>
Last updated on