setTimeout lets you run a task after waiting some time. clearTimeout stops that task if you change your mind.
setTimeout and clearTimeout in Node.js
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Node.js
const timerId = setTimeout(() => {
// code to run after delay
}, delayInMilliseconds);
clearTimeout(timerId);setTimeout returns an ID you use to cancel it with clearTimeout.
The delay is in milliseconds (1000 ms = 1 second).
Examples
Node.js
setTimeout(() => {
console.log('Hello after 2 seconds');
}, 2000);Node.js
const id = setTimeout(() => {
console.log('This will not run');
}, 3000);
clearTimeout(id);Node.js
function greet(name) {
console.log(`Hi, ${name}!`);
}
setTimeout(greet, 1000, 'Alice');Sample Program
This program starts, schedules a message after 1 second, but cancels it immediately. So only 'Start' and 'End' print.
Node.js
console.log('Start'); const timer = setTimeout(() => { console.log('This runs after 1 second'); }, 1000); clearTimeout(timer); console.log('End');
Important Notes
If you don't call clearTimeout, the scheduled code will run after the delay.
You can use clearTimeout anytime before the delay ends to stop the task.
setTimeout is useful for simple delays but not for precise timing or repeated tasks (use setInterval for repeats).
Summary
setTimeout runs code after a delay.
clearTimeout stops the scheduled code before it runs.
Use the ID from setTimeout to cancel with clearTimeout.
Practice
1. What does the
setTimeout function do in Node.js?easy
Solution
Step 1: Understand setTimeout purpose
setTimeoutschedules a function to run once after a delay in milliseconds.Step 2: Compare options with definition
Only Runs a function once after a specified delay matches this behavior. Runs a function repeatedly at fixed intervals describessetInterval, the option about stopping a running function immediately is incorrect, and the option about scheduling when the program ends is incorrect.Final Answer:
Runs a function once after a specified delay -> Option DQuick Check:
setTimeout = run once after delay [OK]
Hint: Remember: setTimeout runs once after delay [OK]
Common Mistakes:
- Confusing setTimeout with setInterval
- Thinking setTimeout repeats automatically
- Believing setTimeout stops functions
2. Which of the following is the correct syntax to cancel a timeout set by
setTimeout?easy
Solution
Step 1: Recall the function to cancel setTimeout
The correct function to cancel a timeout isclearTimeoutwith the timeout ID.Step 2: Check each option's validity
OnlyclearTimeout(timeoutId);uses the correct function name.cancelTimeoutandstopTimeoutdo not exist.clearInterval(timeoutId);is for intervals, not timeouts.Final Answer:
clearTimeout(timeoutId); -> Option CQuick Check:
Cancel timeout = clearTimeout [OK]
Hint: Use clearTimeout with the ID from setTimeout [OK]
Common Mistakes:
- Using clearInterval to cancel setTimeout
- Using non-existent functions like cancelTimeout
- Not passing the timeout ID to clearTimeout
3. What will be the output of the following code?
const id = setTimeout(() => console.log('Hello'), 1000);
clearTimeout(id);
console.log('Done');medium
Solution
Step 1: Analyze setTimeout and clearTimeout usage
The timeout is set to print 'Hello' after 1 second, but immediately cleared withclearTimeout(id).Step 2: Determine what prints immediately
Theconsole.log('Done')runs immediately, so only 'Done' is printed.Final Answer:
Done -> Option AQuick Check:
clearTimeout cancels delayed output [OK]
Hint: clearTimeout stops delayed code; immediate logs still run [OK]
Common Mistakes:
- Expecting 'Hello' to print after clearTimeout
- Thinking both 'Hello' and 'Done' print
- Confusing order of console logs
4. Identify the error in this code snippet:
const timer = setTimeout(() => console.log('Run'), 2000);
clearTimeout(timer);
clearTimeout(timer);medium
Solution
Step 1: Understand clearTimeout behavior
CallingclearTimeoutmultiple times on the same ID does not cause errors; it safely ignores subsequent calls.Step 2: Check syntax and callback execution
Syntax is correct, and the callback will not run because the timeout was cleared.Final Answer:
No error; calling clearTimeout multiple times is safe -> Option AQuick Check:
Multiple clearTimeout calls are safe [OK]
Hint: clearTimeout can be called repeatedly without error [OK]
Common Mistakes:
- Thinking multiple clearTimeout calls cause errors
- Believing callback runs after clearTimeout
- Confusing syntax with missing parentheses
5. You want to print "Start", then after 2 seconds print "Middle", but if a user clicks a button before 2 seconds, cancel "Middle" and print "Cancelled" immediately. Which code snippet correctly implements this behavior?
Options:
A)
console.log('Start');
const id = setTimeout(() => console.log('Middle'), 2000);
button.onclick = () => {
clearTimeout(id);
console.log('Cancelled');
};
B) console.log('Start');
setTimeout(() => console.log('Middle'), 2000);
button.onclick = () => {
clearTimeout();
console.log('Cancelled');
};
C) console.log('Start');
const id = setTimeout(() => console.log('Middle'), 2000);
button.onclick = () => {
console.log('Cancelled');
clearTimeout();
};
D) console.log('Start');
const id = setTimeout(() => console.log('Middle'), 2000);
button.onclick = () => {
clearInterval(id);
console.log('Cancelled');
};hard
Solution
Step 1: Check timeout setup and cancellation
Correctly cancels timeout and prints Cancelled on click, which stores the timeout ID and uses it in clearTimeout inside the click handler, correctly canceling the delayed print.Step 2: Verify order of console logs and function calls
Correctly cancels timeout and prints Cancelled on click prints 'Start' immediately, then 'Cancelled' if clicked before 2 seconds, preventing 'Middle' from printing.Step 3: Analyze other options for errors
The second option does not store the timeout ID and callsclearTimeout()without an argument (no effect). The third option stores the ID but callsclearTimeout()without passing the ID (no effect). The fourth option usesclearInterval(id), which cannot cancel a timeout.Final Answer:
Correctly cancels timeout and prints Cancelled on click -> Option BQuick Check:
Use clearTimeout with stored ID to cancel delayed action [OK]
Hint: Store timeout ID and clearTimeout with it on event [OK]
Common Mistakes:
- Not passing timeout ID to clearTimeout
- Using clearInterval instead of clearTimeout
- Calling clearTimeout without arguments
