Sometimes, we want to find the time left in a setTimeout() timer with JavaScript.
In this article, we’ll look at how to find the time left in a setTimeout() timer with JavaScript.
How to find the time left in a setTimeout() timer with JavaScript?
To find the time left in a setTimeout() timer with JavaScript, we can use the timer’s _idleStart and _idleTimeout properties.
For instance, we write
const timeout = setTimeout(() => {}, 3600 * 1000);
const getTimeLeft = (timeout) => {
return Math.ceil(
(timeout._idleStart + timeout._idleTimeout - Date.now()) / 1000
);
};
setInterval(() => {
console.log("Time left: ", getTimeLeft(timeout), "s");
}, 2000);
to create the timeout timer object with setTimeout.
Then we calculate the time left before running the setTimeout callback with the getTimeLeft function.
In it, we use timeout._idleStart + timeout._idleTimeout - Date.now() to compute the time left before the setTimeout callback is run in milliseconds.
Then we divide the ceiling of the number and divide it by 1000 to get the number of seconds.
Next, we call setInterval with a callback that calls getTimeLeft with timeout in the callback to get the number of seconds left before the setTimeout callback is called every 2 seconds.
Conclusion
To find the time left in a setTimeout() timer with JavaScript, we can use the timer’s _idleStart and _idleTimeout properties.