小程序如何使用防抖和節(jié)流功咒?

防抖(Debounce)和節(jié)流(Throttle)都是用來優(yōu)化函數(shù)執(zhí)行頻率的技術(shù)哩俭,特別在處理用戶輸入、滾動等頻繁觸發(fā)的情況下触趴,它們可以有效減少函數(shù)的執(zhí)行次數(shù)氮发,從而提升性能和用戶體驗(yàn)。但它們的工作方式和應(yīng)用場景有所不同冗懦。

1.防抖(Debounce)

防抖的主要思想是爽冕,當(dāng)持續(xù)觸發(fā)事件時,在事件最后一次觸發(fā)之后披蕉,只有等待一段時間沒有觸發(fā)新事件颈畸,才會執(zhí)行函數(shù)。簡言之嚣艇,防抖是將多次高頻觸發(fā)的事件合并成一次執(zhí)行承冰。

應(yīng)用場景:適用于輸入框輸入华弓、搜索框自動聯(lián)想等情況食零。例如,在用戶輸入過程中寂屏,只在用戶停止輸入后的一段時間內(nèi)才觸發(fā)搜索操作贰谣。

2.節(jié)流(Throttle)

節(jié)流的思想是,當(dāng)持續(xù)觸發(fā)事件時迁霎,保證在一定時間間隔內(nèi)執(zhí)行一次函數(shù)吱抚。即使在該時間間隔內(nèi)觸發(fā)了多次事件,也只會執(zhí)行一次函數(shù)考廉。

應(yīng)用場景:適用于滾動加載秘豹、頁面滾動等情況。例如昌粤,在頁面滾動過程中既绕,只在一段時間間隔內(nèi)觸發(fā)一次加載更多的操作。

防抖實(shí)現(xiàn)示例:

// pages/index/index.js
Page({
  debounceInput: function (e) {
    const value = e.detail.value;
    this.debouncedSearch(value);
  },

  onLoad: function () {
    this.debouncedSearch = this.debounce(this.search, 300);
  },

  debounce: function (func, delay) {
    let timer;
    return function (...args) {
      clearTimeout(timer);
      timer = setTimeout(() => {
        func.apply(this, args);
      }, delay);
    };
  },

  search: function (value) {
    console.log("Searching for:", value);
    // 實(shí)際的搜索操作
  },
});

在這個示例中涮坐,我們使用了防抖技術(shù)來處理用戶在輸入框輸入時的搜索操作凄贩。在 onLoad 階段,我們創(chuàng)建了一個名為 debouncedSearch 的防抖函數(shù)袱讹,將實(shí)際的搜索操作 search 作為參數(shù)傳遞給它疲扎。當(dāng)用戶輸入時,會觸發(fā) debounceInput 函數(shù),它會調(diào)用 debouncedSearch 來觸發(fā)搜索操作椒丧,但只有在用戶停止輸入一段時間后才會真正執(zhí)行搜索壹甥。

節(jié)流實(shí)現(xiàn)示例:

// pages/index/index.js
Page({
  throttleScroll: function (e) {
    this.throttledLoadMore();
  },

  onLoad: function () {
    this.throttledLoadMore = this.throttle(this.loadMore, 1000);
  },

  throttle: function (func, delay) {
    let lastTime = 0;
    return function (...args) {
      const now = new Date().getTime();
      if (now - lastTime >= delay) {
        func.apply(this, args);
        lastTime = now;
      }
    };
  },

  loadMore: function () {
    console.log("Loading more data...");
    // 實(shí)際的加載更多操作
  },
});

在這個示例中,我們使用了節(jié)流技術(shù)來處理頁面滾動時的加載更多操作瓜挽。在 onLoad 階段盹廷,我們創(chuàng)建了一個名為 throttledLoadMore 的節(jié)流函數(shù),將實(shí)際的加載更多操作 loadMore 作為參數(shù)傳遞給它久橙。當(dāng)頁面滾動時俄占,會觸發(fā) throttleScroll 函數(shù),它會調(diào)用 throttledLoadMore 來觸發(fā)加載更多操作淆衷,但只會在一定時間間隔內(nèi)執(zhí)行一次缸榄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祝拯,隨后出現(xiàn)的幾起案子甚带,更是在濱河造成了極大的恐慌,老刑警劉巖佳头,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹰贵,死亡現(xiàn)場離奇詭異,居然都是意外死亡康嘉,警方通過查閱死者的電腦和手機(jī)碉输,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亭珍,“玉大人敷钾,你說我怎么就攤上這事∫蘩妫” “怎么了阻荒?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長众羡。 經(jīng)常有香客問我侨赡,道長,這世上最難降的妖魔是什么粱侣? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任羊壹,我火速辦了婚禮,結(jié)果婚禮上甜害,老公的妹妹穿的比我還像新娘舶掖。我一直安慰自己,他們只是感情好尔店,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布眨攘。 她就那樣靜靜地躺著主慰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鲫售。 梳的紋絲不亂的頭發(fā)上共螺,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音情竹,去河邊找鬼藐不。 笑死,一個胖子當(dāng)著我的面吹牛秦效,可吹牛的內(nèi)容都是我干的雏蛮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼阱州,長吁一口氣:“原來是場噩夢啊……” “哼挑秉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苔货,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤犀概,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夜惭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姻灶,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年诈茧,在試婚紗的時候發(fā)現(xiàn)自己被綠了产喉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡若皱,死狀恐怖镊叁,靈堂內(nèi)的尸體忽然破棺而出尘颓,到底是詐尸還是另有隱情走触,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布疤苹,位于F島的核電站互广,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卧土。R本人自食惡果不足惜惫皱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尤莺。 院中可真熱鬧旅敷,春花似錦、人聲如沸颤霎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晴音,卻和暖如春柔纵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锤躁。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工搁料, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人系羞。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓郭计,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椒振。 傳聞我的和親對象是個殘疾皇子拣宏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容