偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JavaScript:簡單理解防抖和節(jié)流,如何定義防抖和節(jié)流函數(shù)

開發(fā) 前端
防抖函數(shù),就是防止抖動,避免事件重復(fù)觸發(fā)。比如監(jiān)聽輸入框的輸入,不應(yīng)該在用戶每輸入一個字符就觸發(fā)監(jiān)聽,而是在用戶輸入結(jié)束后再來監(jiān)聽。

防抖

防抖函數(shù),就是防止抖動,避免事件重復(fù)觸發(fā)。比如監(jiān)聽輸入框的輸入,不應(yīng)該在用戶每輸入一個字符就觸發(fā)監(jiān)聽,而是在用戶輸入結(jié)束后再來監(jiān)聽。

流程為:1、事件觸發(fā);2、開啟定時器;3、當(dāng)事件再次觸發(fā)的時候,就會清除上個定時器,然后重新開啟新的定時器;4、時間到了以后,就開始處理事件操作。

現(xiàn)在有一個輸入框,代碼如下:

import React from "react";
const Child2 = () => {
  return <input onChange={({ target: { value } }) => {
    console.log(value)
  }} />
};

效果如下圖:

圖片圖片

每輸入一個字符,就觸發(fā)監(jiān)聽事件。如果是搜索查詢的話,那就不合適了。

現(xiàn)在在監(jiān)聽事件上設(shè)置防抖:

import React from "react";
const Child2 = () => {
  const inputChange = debounce(({ target: { value } }) => {
    console.log(value)
  })
  return <input onChange={inputChange} />
};
function debounce(fn) {
  let timeout = null;
  return function () {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
    }, 1000);
  };
}

如果在定時器時間內(nèi),事件再次觸發(fā),那么就清空之前的定時器,然后重新開啟新的定時器。

效果圖:

圖片圖片

這就是防抖。

節(jié)流

節(jié)流就是控制事件觸發(fā)的頻率。比如按鈕點擊,在短時間內(nèi)多次點擊,那么只需要觸發(fā)一次即可。

比如:

import React from "react";
const Child2 = () => {
  return <button onClick={() => {
    console.log("點擊")
  }}>點擊</button>
};

連續(xù)點擊多次,效果如下圖,如果是涉及到網(wǎng)絡(luò)請求的話,那么得不償失了。

圖片圖片

現(xiàn)在定義一下節(jié)流函數(shù):

// 節(jié)流
function throttle(fn) {
  let timeout = null;
  return function () {
    if (timeout) return;
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
      timeout = null;
    }, 1000);
  }
}

完整代碼:

import React from "react";
const Child2 = () => {
  const click = throttle(() => {
    console.log("點擊")
  })
  return <button onClick={click}>點擊</button>
};

// 節(jié)流
function throttle(fn) {
  let timeout = null;
  return function () {
    if (timeout) return;
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
      timeout = null;
    }, 1000);
  }
}

在一秒內(nèi)連續(xù)點擊多次,最后只有一次有效。圖片

責(zé)任編輯:武曉燕 來源: 讀心悅
相關(guān)推薦

2021-08-03 06:57:36

Js事件節(jié)流

2022-02-22 08:29:59

Vue前端防抖

2024-03-08 08:26:20

防抖節(jié)流delay?

2024-10-12 09:33:24

消息隊列多線程并行編程

2023-12-21 08:51:37

防抖節(jié)流Vue.js

2025-05-09 08:00:00

JavaScript代碼防抖節(jié)流

2025-06-19 00:02:00

防抖節(jié)流函數(shù)

2021-11-19 09:01:09

防抖節(jié)流前端

2022-04-01 07:52:42

JavaScript防抖節(jié)流

2022-05-15 22:08:58

ReactHookdebounce

2024-06-14 09:30:58

2024-05-28 09:26:46

2025-10-15 08:00:00

防抖技術(shù)JavaScript

2021-12-09 10:57:19

防抖函數(shù) Debounce

2016-06-30 10:24:47

JavaScript節(jié)流Throttle

2021-12-13 07:50:14

前端性能優(yōu)化

2025-07-02 08:00:00

防抖SpringBoot開發(fā)

2025-05-06 09:35:00

2017-04-25 16:20:10

頁面優(yōu)化滾動優(yōu)化

2024-08-29 15:26:21

點贊
收藏

51CTO技術(shù)棧公眾號