Skip to content

What's the output of the following JS code execution?

js
console.log('Start');

setTimeout(() => {
  console.log('Macrotask completed');
}, 0);

Promise.resolve().then(() => {
  console.log('Microtask completed');
});

Promise.resolve().then(() => {
  console.log('Microtask 2 completed');
});
new Promise((res, rej) => {
    console.log('Inside Promise');
})
console.log('End');

Answer

Start
Inside Promise
End
Microtask completed
Microtask 2 completed
Macrotask completed
  • Microtasks (Promise.then, Promise.catch, fetch, MutationObserver, queeuMicrotask) are executed before macrotasks (setTimeout, onClick/onScroll handlers, AJAX Request)
  • Note in the above code, the callback passed to new Promise constructor is executed synchronously