【React】实现一个基本的防抖函数

函数防抖(debounce),就是指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重新计算函数延执行时间(在这里和函数节流区分一下,函数节流是在触发完事件之后的一段时间之内不能再次触发事件)。
实现:
复制代码
 1    const timer=useRef<any>(null)//react中可用方法之一是是用ref创建timer
 2   //创建防抖函数
 3    const useDebounce = (fun: Function, delay: number) => {
 4           return (lat: number, lng: number) => {
 5               if (timer.current) {
 6                   clearTimeout(timer.current);
 7               }
 8               timer.current = setTimeout(() => {
 9                  fun(lat, lng);
10                  console.log(timer.current);
11                  timer.current = null
12              }, delay);
13          }
14      }
15  //创建触发函数
16      const handleChangeMarkers = useDebounce((lat: number, lng: number) => {
17          const newMarkers = markers?.map((marker: any, index: number) => {
18              if (index + 1 == currentPoint) {
19                  const newPosition = marker.getPosition()
20                  newPosition.lat = lat
21                  newPosition.lng = lng
22                  marker.setPosition(newPosition)
23              }
24              return marker
25          })
26          setChangeMarkers(newMarkers)
27      }, 500)
28 
29 handleChangeMarkers(113.625309,34.746277)
复制代码

 

 

posted @   维多利亚的巴黎世家  阅读(217)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示