JavaScript中函數(shù)的防抖與節(jié)流詳解_第1頁
JavaScript中函數(shù)的防抖與節(jié)流詳解_第2頁
JavaScript中函數(shù)的防抖與節(jié)流詳解_第3頁
JavaScript中函數(shù)的防抖與節(jié)流詳解_第4頁
JavaScript中函數(shù)的防抖與節(jié)流詳解_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第JavaScript中函數(shù)的防抖與節(jié)流詳解目錄一、函數(shù)的節(jié)流1.1定義1.2解決方法1.3案例演示1.3.1代碼演示1.3.2運(yùn)行結(jié)果1.3.3添加函數(shù)節(jié)流操作1.3.4運(yùn)行結(jié)果二、函數(shù)的防抖2.1定義2.2解決方法2.3案例演示2.3.1代碼展示2.3.2運(yùn)行結(jié)果2.3.3添加函數(shù)防抖操作2.3.4運(yùn)行結(jié)果總結(jié)

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

1.1定義

同時(shí)觸發(fā)多次函數(shù)執(zhí)行,執(zhí)行的是相同內(nèi)容,要求只執(zhí)行第一次請求。

例如scroll事件,鼠標(biāo)滾動一次觸發(fā)多次函數(shù)執(zhí)行,只需要執(zhí)行一次。

1.2解決方法

定義類似于開關(guān)的效果,定義一個(gè)變量儲存默認(rèn)值,觸發(fā)執(zhí)行之前先判斷變量存儲的數(shù)據(jù),如果是原始數(shù)據(jù)賦值變量新數(shù)據(jù),如果不是原始數(shù)據(jù),執(zhí)行return終止之后程序的執(zhí)行。

1.3案例演示

這里我們先寫一個(gè)窗口監(jiān)聽事件。

1.3.1代碼演示

!DOCTYPEhtml

htmllang="en"

head

metacharset="UTF-8"

metahttp-equiv="X-UA-Compatible"content="IE=edge"

metaname="viewport"content="width=device-width,initial-scale=1.0"

titleDocument/title

style

body{

//設(shè)置高度讓頁面顯示滾動條

height:4000px;

/style

/head

body

script

//創(chuàng)建窗口監(jiān)聽事件

window.addEventListener("scroll",function(){

fun();

//隨便寫一個(gè)后臺輸出函數(shù)

functionfun(){

console.log(666);

console.log(888);

/script

/body

/html

1.3.2運(yùn)行結(jié)果

可以看到,博主只撥動了一次鼠標(biāo)的滾輪,但是函數(shù)卻執(zhí)行了不止一次。

函數(shù)的節(jié)流就是要做到,滾動一次,執(zhí)行一次函數(shù),后臺輸出一次結(jié)果。

1.3.3添加函數(shù)節(jié)流操作

!DOCTYPEhtml

htmllang="en"

head

metacharset="UTF-8"

metahttp-equiv="X-UA-Compatible"content="IE=edge"

metaname="viewport"content="width=device-width,initial-scale=1.0"

titleDocument/title

style

body{

height:4000px;

/style

/head

body

script

//創(chuàng)建窗口監(jiān)聽事件

//存儲一個(gè)默認(rèn)值為true

letflag=true;

//窗口監(jiān)聽事件

window.addEventListener("scroll",function(){

if(flag){

flag=false;

}else{

return;

fun();

//隨便寫一個(gè)后臺輸出函數(shù)

functionfun(){

//document.write('已經(jīng)到達(dá)1000px的上卷高度了')

console.log(666);

/script

/body

/html

1.3.4運(yùn)行結(jié)果

二、函數(shù)的防抖

2.1定義

同時(shí)觸發(fā)多次函數(shù)執(zhí)行,只執(zhí)行最后一次請求,多次觸發(fā)的函數(shù)程序結(jié)果是不同的。

2.2解決方法

通過延時(shí)器延遲時(shí)間執(zhí)行程序,先清除定時(shí)器,再觸發(fā)定義的新的延時(shí)器執(zhí)行函數(shù)程序。

2.3案例演示

這里我們先寫一個(gè)input輸入數(shù)據(jù)事件。

2.3.1代碼展示

!DOCTYPEhtml

htmllang="en"

head

metacharset="UTF-8"

metahttp-equiv="X-UA-Compatible"content="IE=edge"

metaname="viewport"content="width=device-width,initial-scale=1.0"

titleDocument/title

/head

body

inputtype="text"

script

//獲取標(biāo)簽

constoIpt=document.querySelector('input');

//input輸入事件監(jiān)聽

oIpt.addEventListener('input',function(){

console.log(`您輸入了${oIpt.value.length}個(gè)字`);

/script

/body

/html

2.3.2運(yùn)行結(jié)果

這里我判斷的是輸入字符串的長度,可以看到輸出結(jié)果由1-5個(gè)字,最后打出中文又變回了2個(gè)字符。那防抖的操作就是我只打出最后一個(gè)你好這串字符的長度。

也就是同時(shí)觸發(fā)多次函數(shù)請求,只執(zhí)行最后一次。

2.3.3添加函數(shù)防抖操作

!DOCTYPEhtml

htmllang="en"

head

metacharset="UTF-8"

metahttp-equiv="X-UA-Compatible"content="IE=edge"

metaname="viewport"content="width=device-width,initial-scale=1.0"

titleDocument/title

/head

body

inputtype="text"

script

//獲取標(biāo)簽

constoIpt=document.querySelector('input');

//input輸入事件監(jiān)聽

oIpt.addEventListener('input',function(){

//先清除定時(shí)器

clearInterval(time);

//定義延時(shí)器延遲執(zhí)行函數(shù)程序

time=setTimeout(function(){

//延時(shí)器延遲一秒執(zhí)行程序

setPage();

},2000);

functionse

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論