成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript:簡單理解防抖和節流,如何定義防抖和節流函數

開發 前端
防抖函數,就是防止抖動,避免事件重復觸發。比如監聽輸入框的輸入,不應該在用戶每輸入一個字符就觸發監聽,而是在用戶輸入結束后再來監聽。

防抖

防抖函數,就是防止抖動,避免事件重復觸發。比如監聽輸入框的輸入,不應該在用戶每輸入一個字符就觸發監聽,而是在用戶輸入結束后再來監聽。

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

現在有一個輸入框,代碼如下:

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

效果如下圖:

圖片圖片

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

現在在監聽事件上設置防抖:

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);
  };
}

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

效果圖:

圖片圖片

這就是防抖。

節流

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

比如:

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

連續點擊多次,效果如下圖,如果是涉及到網絡請求的話,那么得不償失了。

圖片圖片

現在定義一下節流函數:

// 節流
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>
};

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

在一秒內連續點擊多次,最后只有一次有效。圖片

責任編輯:武曉燕 來源: 讀心悅
相關推薦

2021-08-03 06:57:36

Js事件節流

2022-02-22 08:29:59

Vue前端防抖

2024-03-08 08:26:20

防抖節流delay?

2024-10-12 09:33:24

消息隊列多線程并行編程

2023-12-21 08:51:37

防抖節流Vue.js

2025-05-09 08:00:00

JavaScript代碼防抖節流

2021-11-19 09:01:09

防抖節流前端

2022-04-01 07:52:42

JavaScript防抖節流

2025-06-19 00:02:00

防抖節流函數

2022-05-15 22:08:58

ReactHookdebounce

2024-06-14 09:30:58

2024-05-28 09:26:46

2021-12-09 10:57:19

防抖函數 Debounce

2016-06-30 10:24:47

JavaScript節流Throttle

2021-12-13 07:50:14

前端性能優化

2025-05-06 09:35:00

2017-04-25 16:20:10

頁面優化滾動優化

2024-08-29 15:26:21

2011-09-29 09:50:44

JavaScript

2024-08-05 09:29:00

前端接口請求
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 麻豆精品一区二区三区在线观看 | 久久机热| 91嫩草精品 | 美女视频三区 | av中文字幕在线 | 国产精品成人一区二区三区 | 91美女视频| 高清成人免费视频 | 国产一区二区三区视频免费观看 | 日韩av福利在线观看 | 久久久久中文字幕 | 国产乱码高清区二区三区在线 | 午夜视频一区二区 | 国产精品国产成人国产三级 | av福利网| 亚洲精品成人在线 | 夜夜爽99久久国产综合精品女不卡 | 国产一区二区三区在线 | 欧美日韩久久精品 | 国产成人免费视频网站高清观看视频 | 日韩在线一区二区三区 | 欧美一级毛片免费观看 | 日韩高清不卡 | 国产一区在线看 | 精品视频久久久 | 女人毛片a毛片久久人人 | 成人不卡| 欧美激情亚洲 | 99re在线视频 | 中文视频在线 | 91九色视频 | 久久免费精品 | 在线精品亚洲欧美日韩国产 | 日韩欧美国产一区二区 | 午夜视频在线观看网址 | 日本xx视频免费观看 | 亚洲精品一二三 | 亚洲精品国产偷自在线观看 | 国产精品一二三区在线观看 | 一区二区三区四区国产 | 一区二区三区免费观看 |