欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

javascript防抖,javascript防抖節(jié)流結(jié)合柯里化

js防抖函數(shù)的使用

function debounce(func, delay) {

高縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

let timer

//當(dāng)前的this是指向window

return function (...args) {

//當(dāng)前的this是指向dom元素

if (timer) {

clearTimeout(timer)

}

timer = setTimeout(() = {

func.apply(this, args)

}, delay)

}

}

例:div id="test"點(diǎn)擊/div

實(shí)現(xiàn)隔3s執(zhí)行一次的操作:

document.getElementById('test').addEventListener('click', debounce(function() {

console.log('執(zhí)行完成之后的動(dòng)作')

}, 3000))

記:事件回調(diào)函數(shù)里的this指向觸發(fā)當(dāng)前事件的DOM元素

js防抖節(jié)流應(yīng)用場(chǎng)景及寫法

1.search搜索聯(lián)想,用戶在不斷輸入值時(shí),用防抖來節(jié)約ajax請(qǐng)求。

2.滾動(dòng)條滾動(dòng)的時(shí)候觸發(fā)事件

1.鼠標(biāo)不斷點(diǎn)擊觸發(fā),mousedown(單位時(shí)間內(nèi)只觸發(fā)一次)

2.上拉觸底加載更多

【js】簡(jiǎn)單理解節(jié)流與防抖,搜索框的場(chǎng)景

在輸入框輸入時(shí),要搜索某個(gè)字符串,基于性能考慮,肯定不能用戶沒輸入一個(gè)字符就發(fā)送一次搜索請(qǐng)求,一種方法就是等待用戶停止輸入,比如過了500ms用戶都沒有再輸入,那么就搜索此時(shí)的字符串,這就是防抖;節(jié)流比防抖寬松一些,比如我們希望給用戶一些搜索提示,所以在用戶輸入過程中,沒過500ms就查詢一次相關(guān)字符串,這就是節(jié)流。

防抖的實(shí)現(xiàn)思路:每次觸發(fā)事件時(shí)都取消之前的延時(shí)調(diào)用方法:

節(jié)流的實(shí)現(xiàn)思路:每次觸發(fā)事件時(shí)都判斷當(dāng)前是否有等待執(zhí)行的延時(shí)函數(shù):

JS的防抖和節(jié)流

應(yīng)用場(chǎng)景: input輸入信息進(jìn)行搜索,如果每敲一個(gè)字符就請(qǐng)求后臺(tái)接口,給后臺(tái)的壓力太大了,所以做好防抖,即讓程序只執(zhí)行最后一次的事件。

為解決該問題,探索到了兩個(gè)解決方案:

直接使用lodash工具庫的debounce方法

參考網(wǎng)址:

應(yīng)用場(chǎng)景: 滾輪滾動(dòng)觸發(fā)事件頻繁,加上延遲可低頻觸發(fā)

看過了上面閉包防抖的寫法,下面閉包節(jié)流的寫法也很好理解了~

js防抖與節(jié)流

所謂防抖,就是指觸發(fā)事件后在 n 秒內(nèi)函數(shù)只能執(zhí)行一次,如果在 n 秒內(nèi)又觸發(fā)了事件,則會(huì)重新計(jì)算函數(shù)執(zhí)行時(shí)間,簡(jiǎn)而言之,防抖就類似回城,打斷就得重新回。

代碼實(shí)現(xiàn)

所謂節(jié)流,就是指連續(xù)觸發(fā)事件但是在 n 秒中只執(zhí)行一次函數(shù)。節(jié)流會(huì)稀釋函數(shù)的執(zhí)行頻率。簡(jiǎn)而言之,節(jié)流就類似技能需要冷卻時(shí)間到了才能用。

代碼實(shí)現(xiàn)

js的防抖、節(jié)流

防抖和節(jié)流,這是前端防止用戶頻繁調(diào)用同一個(gè)接口的方法,比如短時(shí)間重復(fù)點(diǎn)擊上傳同一個(gè)文件,短時(shí)間重復(fù)點(diǎn)擊提交同一個(gè)評(píng)論,異步的操作還沒給你帶來反饋,于是你重復(fù)上傳了多個(gè)文件,重復(fù)提交了多個(gè)評(píng)論。

舉例一個(gè)場(chǎng)景:為了例子更加簡(jiǎn)單,我們就用延遲來模擬一個(gè)后端接口返回的過程。

以上是一個(gè)發(fā)表評(píng)論的例子,由于接口一秒后才會(huì)響應(yīng)評(píng)論反饋到界面上。

用戶本意只是發(fā)布一條評(píng)論,但是由于接口需要響應(yīng)時(shí)間,他以為自己的第一次點(diǎn)擊沒有生效于是就多點(diǎn)擊了兩次,結(jié)果顯而易見,就是非用戶本意的發(fā)布了三條一樣的評(píng)論。

我們希望的是用戶不要在請(qǐng)求還在進(jìn)行的時(shí)候,頻繁的重復(fù)發(fā)送請(qǐng)求。這時(shí)候就需要防抖節(jié)流了。

快速點(diǎn)擊幾次,還是只會(huì)發(fā)送一條評(píng)論。

但是缺點(diǎn)就是用戶得到響應(yīng)的時(shí)間更久了,得要算上延遲加上接口的響應(yīng)。

速點(diǎn)擊幾次,還是只會(huì)發(fā)送一條評(píng)論。只有一條請(qǐng)求發(fā)布成功之后,才能夠發(fā)布第二條請(qǐng)求,對(duì)于該場(chǎng)景十分合適。

分享標(biāo)題:javascript防抖,javascript防抖節(jié)流結(jié)合柯里化
轉(zhuǎn)載注明:http://chinadenli.net/article10/dsgdjdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站云服務(wù)器網(wǎng)站制作定制開發(fā)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營