最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序防止多次點擊跳轉(zhuǎn)和防止表單組件輸入內(nèi)容多次驗證功能(函數(shù)防抖)

 更新時間:2019年09月19日 10:59:32   作者:GavinJay  
這篇文章主要介紹了微信小程序防止多次點擊跳轉(zhuǎn)和防止表單組件輸入內(nèi)容多次驗證功能(函數(shù)防抖),需要的朋友可以參考下

一、函數(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)到達(dá) 規(guī)定時間段,如果是,則執(zhí)行,并更新上次執(zhí)行的時間戳,如此循環(huá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)

### 2.函數(shù)節(jié)流的應(yīng)用場景
需要間隔一定時間觸發(fā)回調(diào)來控制函數(shù)調(diào)用頻率:

* DOM 元素的拖拽功能實現(xiàn)(mousemove)
* 搜索聯(lián)想(keyup)
* 計算鼠標(biāo)移動的距離(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>

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

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

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

總結(jié)

以上所述是小編給大家介紹的微信小程序防止多次點擊跳轉(zhuǎn)和防止表單組件輸入內(nèi)容多次驗證功能(函數(shù)防抖),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • 讓復(fù)選框只能選擇一項的方法

    讓復(fù)選框只能選擇一項的方法

    如何讓復(fù)選框只能選擇一項,實現(xiàn)的方法有很多,在本文為大家詳細(xì)介紹下,有此需求的朋友可以參考下
    2013-10-10
  • 用js通過url傳參把數(shù)據(jù)從一個頁面?zhèn)鞯搅硪粋€頁面

    用js通過url傳參把數(shù)據(jù)從一個頁面?zhèn)鞯搅硪粋€頁面

    如果是傳到新頁面的話,你網(wǎng)站基于什么語言開發(fā)直接用get或者post獲取,然后輸出到這個層
    2014-09-09
  • 微信小程序?qū)崿F(xiàn)藍(lán)牙設(shè)備搜索及連接功能示例詳解

    微信小程序?qū)崿F(xiàn)藍(lán)牙設(shè)備搜索及連接功能示例詳解

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)藍(lán)牙設(shè)備搜索及連接功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 詳解微信小程序調(diào)起鍵盤性能優(yōu)化

    詳解微信小程序調(diào)起鍵盤性能優(yōu)化

    這篇文章主要介紹了詳解微信小程序調(diào)起鍵盤性能優(yōu)化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 原生js實現(xiàn)Flappy Bird小游戲

    原生js實現(xiàn)Flappy Bird小游戲

    這篇文章主要為大家詳細(xì)介紹了原生js實現(xiàn)Flappy Bird小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 最新評論

    承德县| 科技| 长垣县| 临猗县| 高阳县| 苏尼特右旗| 大同市| 漳浦县| 福州市| 济南市| 宁海县| 南投县| 红原县| 曲阜市| 汤阴县| 深泽县| 祥云县| 武夷山市| 牙克石市| 黔南| 西盟| 水城县| 昌图县| 张家界市| 上虞市| 柏乡县| 咸丰县| 东台市| 山阳县| 新干县| 潼南县| 高雄市| 淮阳县| 个旧市| 彭州市| 读书| 四会市| 高尔夫| 延吉市| 新乡县| 德江县|