Skip to main content

Command Palette

Search for a command to run...

imp javascript qns

Updated
1 min read

promises order

console.log(1)  //This is synchronous. It runs immediately.
const promise = new Promise((resolve) => {
  console.log(2) //This is synchronous. It runs immediately.
  resolve() //resolve() is called, which schedules the .then() callbacks as microtasks.
  console.log(3) //This is synchronous. It runs immediately.
})

console.log(4)

promise.then(() => { //.then() callbacks are microtasks,executed after all synchronous code finishes.
  console.log(5) // added to microtask queue
}).then(() => {
  console.log(6) // added to microtask queue
})

console.log(7) //synchronous code

setTimeout(() => { //setTimeout schedules macrotasks.
  console.log(8)
}, 10)

setTimeout(() => {
  console.log(9)
}, 0)

/* The setTimeout with 0ms delay (console.log(9)) will run before the 10ms delay (console.log(8)),
 but both will only execute after microtasks are complete. */
output:
1
2
3
4
7
5
6
9
8
  • Synchronous code: Runs immediately, in the order it is written.

  • Microtasks: These are queued after all synchronous code is executed. Examples: Promise.then(), MutationObserver.

  • Macrotasks: These are queued after microtasks. Examples: setTimeout, setInterval, setImmediate (in Node.js).