loading...
Cover image for setTimeout() - any drawback?

setTimeout() - any drawback?

divyajyotiuk profile image Divyajyoti Ukirde ・1 min read

Recently, I had come across a bug that needed auto-refresh after a certain point of time. And setTimeout() had been used to count down to the time and reload the page. Little did I know that setTimeout() came with a price.

As quoted on MDN Web Docs at the very bottom, "Browsers including Internet Explorer, Chrome, Safari, and Firefox store the delay as a 32-bit signed integer internally. This causes an integer overflow when using delays larger than 2,147,483,647 ms (about 24.8 days), resulting in the timeout being executed immediately."

Now, you'll understand what kept happening to the page! (The page kept reloading...)

It is very much true that there is hardly any process that would require this big a delay. You have other options, like reseting timer after certain duration or using setInterval().

I would prefer setInterval(), when there are simple operations in the callback function and when you know what is the maximum time that function is going to take to execute. If you aren't aware of the maximum time, the event queue will keep piling up forever as your code's activity lags behind the actual system time.

Choose wise! Don't forget to clear the timers when your job is done!

Posted on by:

divyajyotiuk profile

Divyajyoti Ukirde

@divyajyotiuk

I'm currently 🌱 learning and 🔭 working on the Javascript Ecosystem. 😄 Pronouns: she/her ⚡ Fun fact: I have a Computer Engineering background but the whole credit goes to Google and Stack Overflow

Discussion

markdown guide
 

Just curious, what use case is there for a web page that needs to do a task after being open for 24 days? Obviously not a website for end users - maybe an electronic billboard or something? Even then, I can't imagine not reloading a page for that long.

 

A competition to see whose computer can stay on the longest without getting kicked off by windows update.

 

They do that to test browsers for memory leaks. Google and Microsoft for example has a computer with Chrome / Edge open and running that they manually check every morning to make sure it's performant and running.

 

Interesting. I'm broadly aware of issues that can arise due to limitations of underlying data types (eg 32 bit ints or even 16 or 8 bit ints or less for those that really try to optimize space).

Interval sounds like it definitely would be more suitable if factors like "total time elapsed since the beginning" is not necessary.

 

I am wondering, Browser will work more than 24 days. is anybody would have been tested this scenario.