My ASP.NET MVC page uses JavaScript/jQuery to poll my database every second.
This is working but I want to make sure that, if there is a delay, my timer handler won’t get called again before it has returned.
In there any trick to this other than storing the timer ID in a global variable, clearing the timer in my handler, and restarting it when my handler is done.
NOTE: I realize every second seems frequent but this code is polling my server after submitting a credit card payment. Normally, it will only run for a second or so, and I don’t want the user to wait any longer than necessary.
Polling every second? That’s quite heavy!
That aside, you won’t have this issue when
setTimeoutis used instead ofsetInterval. The latter ensures that a piece of code is run x times given a interval, while the former ensures that there’s a delay of at least x milliseconds.