JavaScript防抖實現
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#container {
width: 100%;
height: 300px;
background-color: rgb(13, 84, 105);
color: #fff;
font-size: 48px;
text-align: center;
line-height: 300px;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
let count = 0;
let container = document.getElementById('container')
function doSomething() {
container.innerHTML = count++
}
//防抖
function debounce(fn, wait, immediate) {
let timeout, result
let debounced = function () {
// 解決this指向問題
let context = this
//函式引數
let args = arguments
//清楚定時器
clearTimeout(timeout)
if (immediate) {
//立即執行
let callNow = !timeout;
timeout = setTimeout(() => {
timeout = null
}, wait)
if (callNow) {
result = fn.apply(context, args)
}
} else {
timeout = setTimeout(function () {
result = fn.apply(context, args)
}, wait)
}
}
// 取消
debounced.cancel = function () {
clearTimeout(timeout)
timeout = null
}
return debounced
}
container.onmousemove = debounce(doSomething, 300, false)
</script>
</body>
</html>
相關文章
- JavaFx 實現按鈕防抖Java
- React如何原生實現防抖?React
- javascript函式防抖DebounceJavaScript函式
- Vue元件實現函式防抖Vue元件函式
- Vue實現函式防抖元件Vue函式元件
- 防抖原理以及簡單實現
- JavaScript之節流與防抖JavaScript
- 筆記-JavaScript[節流][防抖]筆記JavaScript
- JavaScript中函式防抖、節流JavaScript函式
- JS簡單實現防抖和節流JS
- javascript之函式防抖與節流JavaScript函式
- JavaScript 前端效能優化之事件防抖JavaScript前端優化事件
- 淺談JavaScript的防抖與節流JavaScript
- JavaScript專題系列-防抖和節流JavaScript
- 防抖與節流的區別與實現
- PHP 防抖(防重複提交)有哪些實現方法,具體程式碼PHP
- 透過Keep-Alive實現防抖&節流元件Keep-Alive元件
- 影片直播原始碼,js實現節流和防抖原始碼JS
- 防抖
- js 防抖實戰講解JS
- JavaScript淺析 -- 定時器和節流防抖JavaScript定時器
- 淺談 JavaScript 中的防抖與節流(一)JavaScript
- JavaScript中的防抖與節流-圖文版JavaScript
- 防抖和節流的應用場景和實現
- js防抖和節流的區別及實現方式JS
- 前端戰五渣學JavaScript——防抖、節流和rAF前端JavaScript
- JS節流和防抖的區分和實現詳解JS
- 【跟著大佬學JavaScript】之lodash防抖節流合併JavaScript
- 防抖節流
- 防抖函式函式
- 節流與防抖
- js面試(防抖)JS面試
- Input框防抖動
- 防抖與節流
- 防抖和節流
- 一道筆試題:利用JS程式碼實現防抖和節流筆試JS
- [手寫系列] Spirit帶你實現防抖函式和節流函式函式
- 聊天室原始碼開發中防抖節流的簡單實現原始碼