Hello, so I am experiencing a problem in my javascript app where I cannot stop a user spamming a button. The app is used to draw three random numbers from a range. when a button is clicked, a number is drawn and a special animation plays, then the next number can be drawn. I am having trouble preventing the user from spamming the draw button. So far I have tried using a local variable called enabled which is set to false when the animation is playing and checked to be true before the actual animation function executes (its set back to false after it executes). I have also tried to remove and add the event listener of the button dynamically when it is pressed. Is there any way you guys think I can solve the issue? Thank you. The code should be in an image with the post.

  • alr
    link
    fedilink
    arrow-up
    10
    ·
    1 year ago

    Rather than messing with the EventListener, wouldn’t it be easier to just throttle the function that it calls? You can find a bunch of articles online that will explain how to implement a throttle (and also a debouncer, which is similar, but not quite what you’re looking for; a throttle allows a function to be called immediately unless it’s already been called too recently, while a debouncer waits every time before calling the function and restarts the wait timer every time someone tried to call the function).