Using setTimeout & setInterval: JavaScript Timers

Master asynchronous JavaScript by learning how to delay tasks and create repeating actions with these essential timing functions.

Welcome! Let's explore JavaScript's timers: `setTimeout` for delays and `setInterval` for repetitions.

/* Mastering Time in JS... */

setTimeout: The One-Time Delay

The setTimeout function schedules a 'callback' function to run once after a specified delay in milliseconds. It's perfect for tasks you want to postpone, like showing a welcome message after a user has been on a page for a few seconds.

setInterval: The Repeating Task

Unlike its sibling, setInterval repeatedly executes a callback function at a fixed time interval. Think of a digital clock updating every second or a live feed refreshing automatically—that's setInterval at work.

Stopping Timers: clearTimeout & clearInterval

Both setTimeout and setInterval return a unique ID. You can pass this ID to clearTimeout or clearInterval respectively to cancel the scheduled task. This is crucial for preventing memory leaks and unwanted behavior.

The Asynchronous Nature of Timers

JavaScript is single-threaded, but these timers don't block the main thread. When you call a timer function, the browser's timer API handles the waiting. Once the delay is over, the callback is added to a queue to be executed when the main thread is free, keeping your website responsive.

Practice Zone


Interactive Test 1: Stop the Timers

Match the function to its description.

Arrastra en el orden correspondiente.


Arrastra las opciones:

clearTimeout
clearInterval

Completa el código:

Cancels a one-time timer______
Stops a repeating timer______
Unlock with Premium

Interactive Test 2: Choose the Right Timer

Rellena los huecos en cada casilla.

// Show a message after 3 seconds
(() => {
  console.log("Delayed message!");
}, 3000);

// Log a message every second
(() => {
  console.log("Repeating message!");
}, 1000);
Unlock with Premium

Practice Example: Code Your Own Timers

Write code to log "Hello after 2 seconds!" once after a 2-second delay. Then, write code to log "Repeating..." every 3 seconds.

Enunciado:

* Escribe el código a continuación. Los caracteres correctos se mostrarán en verde y los incorrectos en rojo.

setTimeout(() => { console.log("Hello after 2 seconds!"); }, 2000); setInterval(() => { console.log("Repeating..."); }, 3000);
Unlock with Premium

Knowledge Check

If you want to run a function exactly once after 5 seconds, which function should you use?


Unlock with Premium

Timers in Action: Practical Use Cases

`setTimeout` and `setInterval` are more than just academic tools; they power many features you see every day on the web.


1. Debouncing User Input

To avoid sending excessive requests to a server (e.g., in a search bar), you can use `setTimeout` to wait until the user has stopped typing for a moment before fetching results. This is a performance technique called debouncing.

let typingTimer;
const doneTypingInterval = 500; // 500ms

input.addEventListener('keyup', () => {
  clearTimeout(typingTimer);
  typingTimer = setTimeout(fetchResults, doneTypingInterval);
});

2. Simple UI Animations & Slideshows

`setInterval` is perfect for creating simple, timed animations like a loading spinner, a countdown timer, or an automatic image slideshow.

let currentSlide = 0;
const slides = document.querySelectorAll('.slide');

setInterval(() => {
  slides[currentSlide].classList.remove('active');
  currentSlide = (currentSlide + 1) % slides.length;
  slides[currentSlide].classList.add('active');
}, 3000);
Image Slideshow

3. Polling for Server Updates

Sometimes you need to check a server for new data periodically, like notifications or live sports scores. `setInterval` can be used to "poll" an endpoint every few seconds to fetch the latest information.

// Check for new messages every 10 seconds
setInterval(async () => {
  const newMessages = await fetch('/api/messages');
  updateUI(newMessages);
}, 10000);
Check for Updates

Practical Takeaway: Mastering timers allows you to build more responsive, efficient, and dynamic web applications by controlling *when* your code executes.

JavaScript Timers Glossary

setTimeout(callback, delay)
Executes the `callback` function **once** after the `delay` (in milliseconds) has passed. Returns a timer ID.
setInterval(callback, delay)
Executes the `callback` function **repeatedly** every `delay` milliseconds. Returns a timer ID.
clearTimeout(timerID)
Prevents a scheduled `setTimeout` from executing. Requires the ID returned by `setTimeout`.
clearInterval(timerID)
Stops the repeated execution of a `setInterval`. Requires the ID returned by `setInterval`.
Callback Function
A function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.
Asynchronous
Refers to operations that can run in the background without blocking the main execution thread. Timers are a classic example of asynchronous behavior in JavaScript.