日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ege限制鼠标移动的函数_浅谈函数节流和函数防抖

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ege限制鼠标移动的函数_浅谈函数节流和函数防抖 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是函數(shù)節(jié)流和函數(shù)防抖?下面本篇文章就來給大家淺談一下函數(shù)節(jié)流和函數(shù)防抖。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

前言

事件的觸發(fā)權(quán)很多時候都屬于用戶,有些情況下會產(chǎn)生問題:

  • 向后臺發(fā)送數(shù)據(jù),用戶頻繁觸發(fā),對服務(wù)器造成壓力
  • 一些瀏覽器事件:window.onresize、window.mousemove等,觸發(fā)的頻率非常高,會造成瀏覽器性能問題

如果你碰到這些問題,那就需要用到函數(shù)節(jié)流和防抖了。

一、函數(shù)節(jié)流(throttle)

函數(shù)節(jié)流:一個函數(shù)執(zhí)行一次后,只有大于設(shè)定的執(zhí)行周期后才會執(zhí)行第二次。
有個需要頻繁觸發(fā)函數(shù),出于優(yōu)化性能角度,在規(guī)定時間內(nèi),只讓函數(shù)觸發(fā)的第一次生效,后面不生效。

1.如何實現(xiàn)

其原理是用時間戳來判斷是否已到回調(diào)該執(zhí)行時間,記錄上次執(zhí)行的時間戳,然后每次觸發(fā) scroll 事件執(zhí)行回調(diào),回調(diào)中判斷當(dāng)前時間戳距離上次執(zhí)行時間戳的間隔是否已經(jīng)到達 規(guī)定時間段,如果是,則執(zhí)行,并更新上次執(zhí)行的時間戳,如此循環(huán);

html,body {height: 500%; // 讓其出現(xiàn)滾動條 } function throttle(fn, delay) {// 記錄上一次函數(shù)觸發(fā)的時間var lastTime = 0;return function() {// 記錄當(dāng)前函數(shù)觸發(fā)的時間var nowTime = Date.now();if (nowTime - lastTime > delay) {// 修正this指向問題fn.call(this);// 同步時間lastTime = nowTime;}} } document.onscroll = throttle(function() {console.log('scroll事件被觸發(fā)了' + Date.now()) } , 200)

上例中用到了閉包的特性--可以使變量lastTime的值長期保存在內(nèi)存中。

2.函數(shù)節(jié)流的應(yīng)用場景

需要間隔一定時間觸發(fā)回調(diào)來控制函數(shù)調(diào)用頻率:

  • DOM 元素的拖拽功能實現(xiàn)(mousemove)
  • 搜索聯(lián)想(keyup)
  • 計算鼠標移動的距離(mousemove)
  • Canvas 模擬畫板功能(mousemove)
  • 射擊游戲的 mousedown/keydown 事件(單位時間只能發(fā)射一顆子彈)
  • 監(jiān)聽滾動事件判斷是否到頁面底部自動加載更多:給 scroll 加了 debounce 后,只有用戶停止?jié)L動后,才會判斷是否到了頁面底部;如果是 throttle 的話,只要頁面滾動就會間隔一段時間判斷一次

二、函數(shù)防抖(debounce)

防抖函數(shù):一個需要頻繁觸發(fā)的函數(shù),在規(guī)定時間內(nèi),只讓最后一次生效,前面的不生效。

1.如何實現(xiàn)

其原理就第一次調(diào)用函數(shù),創(chuàng)建一個定時器,在指定的時間間隔之后運行代碼。當(dāng)?shù)诙握{(diào)用該函數(shù)時,它會清除前一次的定時器并設(shè)置另一個。如果前一個定時器已經(jīng)執(zhí)行過了,這個操作就沒有任何意義。然而,如果前一個定時器尚未執(zhí)行,其實就是將其替換為一個新的定時器,然后延遲一定時間再執(zhí)行。

<button id='btn'>按鈕</button> <script type="text/javascript"> function debounce(fn, delay) {// 記錄上一次的延時器var timer = null;return function() {// 清除上一次延時器clearTimeout(timer)timer = setTimeout(function() {fn.apply(this)}, delay)} } document.getElementById('btn').onclick = debounce(function() {console.log('點擊事件被觸發(fā)' + Date.now()) }, 1000) </script>

上例中也用到了閉包的特性--可以使變量timer的值長期保存在內(nèi)存中。

2.函數(shù)防抖的應(yīng)用場景

對于連續(xù)的事件響應(yīng)我們只需要執(zhí)行一次回調(diào):

  • 每次 resize/scroll 觸發(fā)統(tǒng)計事件
  • 文本輸入的驗證(連續(xù)輸入文字后發(fā)送 AJAX 請求進行驗證,驗證一次就好)

三、總結(jié)

函數(shù)節(jié)流和函數(shù)去抖的核心其實就是限制某一個方法被頻繁觸發(fā),而一個方法之所以會被頻繁觸發(fā),大多數(shù)情況下是因為 DOM 事件的監(jiān)聽回調(diào),而這也是函數(shù)節(jié)流以及防抖多數(shù)情況下的應(yīng)用場景。

參考文章

函數(shù)節(jié)流與函數(shù)防抖

JavaScript 函數(shù)節(jié)流和函數(shù)去抖應(yīng)用場景辨析

函數(shù)節(jié)流、函數(shù)防抖實現(xiàn)原理分析

本文轉(zhuǎn)載自: https://segmentfault.com/a/1190000017229182

總結(jié)

以上是生活随笔為你收集整理的ege限制鼠标移动的函数_浅谈函数节流和函数防抖的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品国产精品国 | 亚洲精品欧美精品 | 强乱中文字幕av一区乱码 | 黄色小说在线免费观看 | 高清国产一区 | 无码任你躁久久久久久老妇 | 性欢交69国产精品 | 精品福利视频一区二区 | 国产精品一区二区黑人巨大 | 91国偷自产中文字幕久久 | 国产精品久久久久久久蜜臀 | 好看的黄色录像 | 免费一级片视频 | 国产av人人夜夜澡人人爽 | 欧美色xxxxx| 免费人成又黄又爽又色 | 调教撅屁股啪调教打臀缝av | 娇妻玩4p被三个男人伺候电影 | 国产操| 国产精品国语 | 黄色国产视频网站 | 国产网站免费观看 | 国产一级二级三级精品 | 熟妇人妻无乱码中文字幕真矢织江 | 亚洲va欧美va天堂v国产综合 | 一级片黑人 | 欧美在线视频一区二区三区 | 国产玖玖在线 | 爱情岛论坛亚洲线路一 | 人与动物2免费观看完整版电影高清 | 久久五月网 | 性生活视频网站 | 国产麻豆自拍 | 美日韩久久 | 午夜久久一区 | 污污网站在线播放 | 不良视频在线观看 | 超碰95在线 | av片在线免费观看 | 麻豆影视免费观看 | 国产欧美第一页 | 免费在线一区二区三区 | 毛片在线视频播放 | 欧美精品国产动漫 | 美景之屋电影免费高清完整韩剧 | 成人a v视频| 亚洲国产精品成人无码区 | 麻豆91茄子在线观看 | 超碰在线99 | 欧美影院在线 | 国产日产欧美一区二区三区 | 国产a视频精品免费观看 | 国产孕交 | 私库av在线 | 中文字幕欲求不满 | 91精品国产乱码久久久久久久久 | 怡红院成永久免费人全部视频 | 欧美极品jizzhd欧美仙踪林 | 国产精品suv一区二区 | 一级视频黄色 | 亚洲图片88 | 诱惑の诱惑筱田优在线播放 | 操比网站| 91喷水 | 久久香蕉网 | 欧美亚洲国产精品 | 偷自拍 | 在线中文视频 | 欧美老熟妇喷水 | 久久九 | 国产在线一级片 | www污污 | 日日爽夜夜爽 | 久久成人精品一区二区 | 热re99久久精品国产99热 | 成人日皮视频 | 欧美性猛交xxx乱久交 | 岳乳丰满一区二区三区 | 91亚洲精华国产精华精华液 | 日韩人妻无码精品久久免费 | 亚洲激情av在线 | 韩国黄色网 | 日本激情影院 | 精品一区二区三区在线观看 | 日本女教师电影 | 蜜臀av无码一区二区三区 | 久久中文字幕电影 | 少妇裸体挤奶汁奶水视频 | 久久久精品日韩 | 少妇又色又爽又黄的视频 | 一区二区视频在线观看免费 | 成人在线观看国产 | 亚洲精品另类 | 夜夜夜网站 | 日本不卡影院 | 日本十八禁视频无遮挡 | 高清在线一区二区三区 | 国产男女自拍 | 日本 奴役 捆绑 受虐狂xxxx |