imp javascript qns
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).