JavaScript

throttle() - lodash

폴리프레임 2024. 5. 27. 08:26
반응형

throttle 함수는 주어진 시간 간격 동안 함수를 한 번만 실행하도록 제한합니다. 즉, 함수가 여러 번 호출되더라도 일정한 시간 간격 내에서는 한 번만 실행됩니다. throttle(callback, time)

//npm install lodash

import { throttle } from 'lodash'

const playAudio = throttle(()=> {
  const audio = new Audio("/alert-alarm.wav")
  audio.play();
},8000)

이렇게 하면 playAudio()가 setInverval()함수에 의해 1000ms 미만으로 불려도, alarm 사운드 길이에 관계없이  8초의 간격으로 alert-alarm.wav 를 실행함.

const playAudio = ()=> {
    const audio = new Audio("/alert-alarm.wav")
    audio.play();

  }
const throttleButton = throttle(playAudio,8000)

let intervalId;
const alarmStart = ()=>{
    intervalId = setInterval(throttleButton,4000)
    console.log("alarm started")
}
const alarmStop = ()=> {
    clearInterval(intervalId)
    console.log("alarm stopped")
}

document.getElementById('btn').addEventListener(
    'click', 
    alarmStart
    
);
document.getElementById('cansel').addEventListener(
    'click', 
    alarmStop
);

참고: Vanila JavaScript로 사용하는 경우 CDN 또는 npm init, npm install, npm install lodash 후에

<script src = "main.js"  type= "module"> </script>

로 사용 가능