真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言防抖函數(shù) 封裝防抖函數(shù)

手寫防抖和節(jié)流函數(shù)實現(xiàn)

防抖和節(jié)流的概念其實最早并不是出現(xiàn)在軟件工程中,防抖是出現(xiàn)在電子元件中,節(jié)流出現(xiàn)在流體流動中

站在用戶的角度思考問題,與客戶深入溝通,找到久治網(wǎng)站設(shè)計與久治網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋久治地區(qū)。

但是很多前端開發(fā)者面對這兩個功能,有點摸不著頭腦:

a. 某些開發(fā)者根本無法區(qū)分防抖和節(jié)流有什么區(qū)別(面試經(jīng)常會被問到);

b. 某些開發(fā)者可以區(qū)分,但是不知道如何應(yīng)用;

c. 某些開發(fā)者會通過一些第三方庫來使用,但是不知道內(nèi)部原理,更不會編寫;

「在事件被觸發(fā)n秒后再執(zhí)行回調(diào),如果再這n秒內(nèi)又被觸發(fā),則重新計算」

? 輸入框中頻繁的輸入內(nèi)容,搜索或者提交信息;

? 頻繁的點擊按鈕,觸發(fā)某個事件;

? 監(jiān)聽瀏覽器滾動事件,完成某些特定操作;

? 用戶縮放瀏覽器的resize事件;

我們都遇到過這樣的場景,在某個搜索框中輸入自己想要搜索的內(nèi)容

比如想要搜索一個MacBook:

但是我們需要這么多次的網(wǎng)絡(luò)請求嗎?

這就是防抖的操作:只有在某個時間內(nèi),沒有再次觸發(fā)某個函數(shù)時,才真正的調(diào)用這個函數(shù);

我們通過一個搜索框來延遲防抖函數(shù)的實現(xiàn)過程:

p 監(jiān)聽input的輸入,通過打印模擬網(wǎng)絡(luò)請求

n 測試發(fā)現(xiàn)快速輸入一個macbook共發(fā)送了7次請求,顯示我們需要對它進(jìn)行防抖操作:

基本實現(xiàn)

立即執(zhí)行函數(shù)

增加取消功能

效果

規(guī)定在一個單位時間內(nèi),只能觸發(fā)一次函數(shù)。如果這個單位時間內(nèi)觸發(fā)多次函數(shù),只有一次生效

節(jié)流的實現(xiàn)過程

完善節(jié)流

C語言的按鍵開關(guān)防抖程序~

key為按鍵,規(guī)定按下為低電平

if(key==0)

{

delay(50); //延時50ms,消抖

if(key==0) //再判斷是否按下

{

while(!key); 松手檢測

··················································

該按鍵按下要實現(xiàn)的功能程序

··················································

}

}

我的習(xí)慣是這樣寫

單片機鍵盤去抖動c語言程序?。。?/h2>

使用這個到板子里面:

#include reg52.h

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

sbit KEY1 = P2^4;

sbit KEY2 = P2^5;

sbit KEY3 = P2^6;

sbit KEY4 = P2^7;

unsigned char code LedChar[] = { //數(shù)碼管顯示字符轉(zhuǎn)換表0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};

void delay();

void main(){

bit keybuf = 1; //按鍵值暫存,臨時保存按鍵的掃描值

bit backup = 1; //按鍵值備份,保存前一次的掃描值

unsigned char cnt = 0; //按鍵計數(shù),記錄按鍵按下的次數(shù)

ENLED = 0; ?//選擇數(shù)碼管 DS1 進(jìn)行顯示

ADDR3 = 1;

ADDR2 = 0;

ADDR1 = 0;

ADDR0 = 0;

P2 = 0xF7; ?//P2.3 置 0,即 KeyOut1 輸出低電平

P0 = LedChar[cnt]; ?//顯示按鍵次數(shù)初值

while (1){

keybuf = KEY4; ?//把當(dāng)前掃描值暫存

if (keybuf != backup){ ?//當(dāng)前值與前次值不相等說明此時按鍵有動作

delay(); ?//延時大約 10ms

if (keybuf == KEY4){ ?//判斷掃描值有沒有發(fā)生改變,即按鍵抖動

if (backup == 0){ ?//如果前次值為 0,則說明當(dāng)前是彈起動作

cnt++; ?//按鍵次數(shù)+1

//只用 1 個數(shù)碼管顯示,所以加到 10 就清零重新開始

if (cnt = 10){

cnt = 0;

}

P0 = LedChar[cnt]; //計數(shù)值顯示到數(shù)碼管上

}

backup = keybuf; //更新備份為當(dāng)前值,以備進(jìn)行下次比較

}

}

}

}

/* 軟件延時函數(shù),延時約 10ms */

void delay(){

unsigned int i = 1000;

while (i--);

}


分享題目:C語言防抖函數(shù) 封裝防抖函數(shù)
路徑分享:http://weahome.cn/article/dooehgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部