Bird
Raised Fist0
Node.jsframework~10 mins

Why timing matters in Node.js in Node.js - Test Your Understanding

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print a message after 1 second using setTimeout.

Node.js
setTimeout(() => { console.log([1]); }, 1000);
Drag options to blanks, or click blank then click option'
A"Hello after 1 second"
BHello after 1 second
Cconsole.log('Hello')
D1000
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting quotes around the string
Passing a number instead of a string
Trying to call console.log inside the argument
2fill in blank
medium

Complete the code to run a function repeatedly every 2 seconds using setInterval.

Node.js
setInterval([1], 2000);
Drag options to blanks, or click blank then click option'
Aconsole.log
Bconsole.log('Repeat')
C() => console.log('Repeat')
D'Repeat'
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a string instead of a function
Calling console.log immediately instead of passing a function
Passing console.log without calling it
3fill in blank
hard

Fix the error in the code to correctly delay the execution of greet function by 3 seconds.

Node.js
function greet() { console.log('Hi!'); } setTimeout([1], 3000);
Drag options to blanks, or click blank then click option'
Agreet()
Bgreet
C() => greet()
DsetTimeout(greet, 3000)
Attempts:
3 left
💡 Hint
Common Mistakes
Calling the function immediately with parentheses
Passing a string instead of a function
Using setTimeout inside setTimeout
4fill in blank
hard

Fill both blanks to create a timer that stops after 5 seconds.

Node.js
const timer = setInterval(() => { console.log('Tick'); }, [1]); setTimeout(() => { clearInterval([2]); console.log('Stopped'); }, 5000);
Drag options to blanks, or click blank then click option'
A1000
Btimer
C500
DsetInterval
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong interval time
Passing wrong variable to clearInterval
Confusing setInterval with clearInterval
5fill in blank
hard

Fill all three blanks to create a promise that resolves after 2 seconds with message 'Done'.

Node.js
const myPromise = new Promise(([1], [2]) => { setTimeout(() => { [3]('Done'); }, 2000); });
Drag options to blanks, or click blank then click option'
Aresolve
Breject
Cconsole.log
Dcallback
Attempts:
3 left
💡 Hint
Common Mistakes
Using console.log instead of resolve
Swapping resolve and reject
Not calling resolve inside setTimeout

Practice

(1/5)
1. In Node.js, why does process.nextTick run before setTimeout and setImmediate?
easy
A. Because process.nextTick waits for a timer to expire before running.
B. Because process.nextTick callbacks run immediately after the current operation completes, before the event loop continues.
C. Because process.nextTick runs only after all I/O events finish.
D. Because process.nextTick schedules tasks in the next event loop cycle.

Solution

  1. Step 1: Understand Node.js event loop phases

    Node.js event loop has phases: timers, I/O callbacks, idle, poll, check, and close callbacks.
  2. Step 2: Identify when process.nextTick runs

    process.nextTick callbacks run immediately after the current operation, before the event loop continues to the next phase.
  3. Final Answer:

    Because process.nextTick callbacks run immediately after the current operation completes, before the event loop continues. -> Option B
  4. Quick Check:

    process.nextTick runs before timers and I/O [OK]
Hint: Remember: nextTick runs before event loop phases start [OK]
Common Mistakes:
  • Thinking nextTick waits for timers
  • Confusing nextTick with setImmediate timing
  • Assuming nextTick runs after I/O callbacks
2. Which of the following is the correct syntax to schedule a function to run immediately after I/O events in Node.js?
easy
A. setImmediate(fn)
B. setTimeout(fn, 0)
C. process.nextTick(fn)
D. setInterval(fn, 0)

Solution

  1. Step 1: Recall timing functions in Node.js

    setTimeout(fn, 0) runs after timers phase, process.nextTick runs before event loop phases, setImmediate runs after I/O events.
  2. Step 2: Identify function that runs immediately after I/O

    setImmediate is designed to run callbacks after I/O events in the check phase.
  3. Final Answer:

    setImmediate(fn) -> Option A
  4. Quick Check:

    setImmediate runs after I/O events [OK]
Hint: setImmediate runs after I/O, not before [OK]
Common Mistakes:
  • Using setTimeout(fn, 0) to run after I/O
  • Confusing process.nextTick with setImmediate
  • Using setInterval for one-time immediate run
3. What will be the output order of the following Node.js code?
console.log('start');
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
process.nextTick(() => console.log('nextTick'));
console.log('end');
medium
A. start, end, nextTick, timeout, immediate
B. start, end, timeout, nextTick, immediate
C. start, nextTick, end, immediate, timeout
D. start, end, nextTick, immediate, timeout

Solution

  1. Step 1: Identify synchronous and asynchronous parts

    console.log('start') and console.log('end') run immediately. process.nextTick runs after current operation but before event loop phases.
  2. Step 2: Understand event loop order

    process.nextTick runs first, then setImmediate callbacks, then setTimeout with 0 delay.
  3. Final Answer:

    start, end, nextTick, immediate, timeout -> Option D
  4. Quick Check:

    nextTick before immediate before timeout [OK]
Hint: nextTick runs before immediate and timeout [OK]
Common Mistakes:
  • Assuming setTimeout runs before setImmediate
  • Thinking nextTick runs after synchronous logs
  • Mixing order of immediate and timeout
4. Consider this Node.js code snippet:
setTimeout(() => console.log('timeout'));
setImmediate(() => console.log('immediate'));
process.nextTick(() => console.log('nextTick'));
process.nextTick(() => console.log('another nextTick'));

Which issue causes unexpected order of output, and how to fix it?
medium
A. process.nextTick callbacks run before setImmediate and setTimeout; no fix needed, it's expected.
B. setImmediate runs before process.nextTick; swap their calls to fix.
C. Missing delay in setTimeout causes error; add delay 0 to fix.
D. setTimeout and setImmediate run simultaneously causing race; use only one.

Solution

  1. Step 1: Analyze order of callbacks

    process.nextTick callbacks always run before setImmediate and setTimeout, regardless of order in code.
  2. Step 2: Understand if this is an issue

    This behavior is by design in Node.js event loop; no error or fix needed.
  3. Final Answer:

    process.nextTick callbacks run before setImmediate and setTimeout; no fix needed, it's expected. -> Option A
  4. Quick Check:

    nextTick always runs first [OK]
Hint: nextTick always runs before timers and immediate [OK]
Common Mistakes:
  • Thinking missing delay in setTimeout causes error
  • Expecting setImmediate to run before nextTick
  • Trying to fix timing by swapping calls
5. You want to run a function immediately after the current operation but before any I/O or timers. Which combination of Node.js timing functions ensures this behavior even if multiple callbacks are scheduled?
hard
A. Use setTimeout(fn, 0) for immediate callbacks and process.nextTick for I/O callbacks.
B. Use only setImmediate for all callbacks.
C. Use process.nextTick for immediate callbacks and setImmediate for I/O callbacks.
D. Use setTimeout(fn, 0) for all callbacks to ensure order.

Solution

  1. Step 1: Identify timing needs

    To run immediately after current operation but before I/O or timers, process.nextTick is used.
  2. Step 2: Handle I/O callbacks after immediate tasks

    setImmediate runs after I/O events, so use it for I/O callbacks to maintain order.
  3. Final Answer:

    Use process.nextTick for immediate callbacks and setImmediate for I/O callbacks. -> Option C
  4. Quick Check:

    nextTick before I/O, setImmediate after I/O [OK]
Hint: nextTick for immediate, setImmediate for I/O callbacks [OK]
Common Mistakes:
  • Using setImmediate for immediate callbacks
  • Using setTimeout for immediate timing
  • Mixing setTimeout and nextTick incorrectly