成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JS函數(shù)防抖的詳細(xì)解析-創(chuàng)新互聯(lián)

這篇文章主要講解了JS函數(shù)防抖的詳細(xì)解析,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

成都創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元嘉定做網(wǎng)站,已為上家服務(wù),為嘉定各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

一、什么是函數(shù)防抖

       概念:函數(shù)防抖(debounce),就是指觸發(fā)事件后,在 n 秒內(nèi)函數(shù)只能執(zhí)行一次,如果觸發(fā)事件后在 n 秒內(nèi)又觸發(fā)了事件,則會(huì)重新計(jì)算函數(shù)延執(zhí)行時(shí)間。

       舉個(gè)栗子,坐電梯的時(shí)候,如果電梯檢測(cè)到有人進(jìn)來(lái)(觸發(fā)事件),就會(huì)多等待 10 秒,此時(shí)如果又有人進(jìn)來(lái)(10秒之內(nèi)重復(fù)觸發(fā)事件),那么電梯就會(huì)再多等待 10 秒。在上述例子中,電梯在檢測(cè)到有人進(jìn)入 10 秒鐘之后,才會(huì)關(guān)閉電梯門(mén)開(kāi)始運(yùn)行,因此,“函數(shù)防抖”的關(guān)鍵在于,在 一個(gè)事件 發(fā)生 一定時(shí)間 之后,才執(zhí)行 特定動(dòng)作

二、為什么需要函數(shù)防抖

  前端開(kāi)發(fā)過(guò)程中,有一些事件,常見(jiàn)的例如,onresize,scroll,mousemove ,mousehover 等,會(huì)被頻繁觸發(fā)(短時(shí)間內(nèi)多次觸發(fā)),不做限制的話,有可能一秒之內(nèi)執(zhí)行幾十次、幾百次,如果在這些函數(shù)內(nèi)部執(zhí)行了其他函數(shù),尤其是執(zhí)行了操作 DOM 的函數(shù)(瀏覽器操作 DOM 是很耗費(fèi)性能的),那不僅會(huì)浪費(fèi)計(jì)算機(jī)資源,還會(huì)降低程序運(yùn)行速度,甚至造成瀏覽器卡死、崩潰。這種問(wèn)題顯然是致命的。

       除此之外,短時(shí)間內(nèi)重復(fù)的 ajax 調(diào)用不僅會(huì)造成數(shù)據(jù)關(guān)系的混亂,還會(huì)造成網(wǎng)絡(luò)擁塞,增加服務(wù)器壓力,顯然這個(gè)問(wèn)題也是需要解決的。

三、函數(shù)防抖如何解決上述問(wèn)題

       根據(jù)上面對(duì)問(wèn)題的分析,細(xì)細(xì)思索,可以想到如下解決方案。

       函數(shù)防抖的要點(diǎn),是需要一個(gè) setTimeout 來(lái)輔助實(shí)現(xiàn),延遲運(yùn)行需要執(zhí)行的代碼。如果方法多次觸發(fā),則把上次記錄的延遲執(zhí)行代碼用 clearTimeout 清掉,重新開(kāi)始計(jì)時(shí)。若計(jì)時(shí)期間事件沒(méi)有被重新觸發(fā),等延遲時(shí)間計(jì)時(shí)完畢,則執(zhí)行目標(biāo)代碼。

四、函數(shù)防抖的代碼實(shí)現(xiàn)

       根據(jù)以上分析,我們對(duì) “函數(shù)防抖” 來(lái)進(jìn)行簡(jiǎn)單的代碼實(shí)現(xiàn),如下:

function debounce(fn,wait){
 var timer = null;
 return function(){
  if(timer !== null){
   clearTimeout(timer);
  }
  timer = setTimeout(fn,wait);
 }
}
 
function handle(){
 console.log(Math.random());
}
 
window.addEventListener("resize",debounce(handle,1000));

本文名稱(chēng):JS函數(shù)防抖的詳細(xì)解析-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://jinyejixie.com/article28/hegjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站微信公眾號(hào)、定制網(wǎng)站、軟件開(kāi)發(fā)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
岳普湖县| 泉州市| 专栏| 吴旗县| 高碑店市| 万安县| 莱州市| 万安县| 卢氏县| 建平县| 女性| 贺州市| 阜南县| 无棣县| 游戏| 绥阳县| 舒兰市| 南雄市| 清徐县| 日照市| 福海县| 永修县| 新源县| 和林格尔县| 抚顺县| 南宁市| 永和县| 北安市| 宜章县| 崇州市| 湟源县| 甘泉县| 白玉县| 泸定县| 左贡县| 黔江区| 奉新县| 新宾| 黄平县| 大安市| 贡嘎县|