What's the order of the output?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Both setTimeout
and Promise.resolve
are asynchronous actions, which means that the inner console.log
statements will be evaluated after some delay.
The difference is that Promise.resolve
schedules the microtask, and setTimeout
schedules the macrotask. Micro tasks have higher priority than macrotasks, thus Promise.resolve
will be evaluated faster and the first output will be 2
.
ANSWER: 2
will be printed on the first line, followed by 1
.
Top comments (5)
Never heard of this concept of microtasks vs macrotasks. Where can I read more about it?
This is the best read I've found on tasks.
jakearchibald.com/2015/tasks-micro...
Frontend Masters has a course taught by Will Sentance -- he explains this in painstaking detail. Very good course -- I think it's 'Javascript, the Hard Parts'.
FWIW, this answer can also be browser dependent. Apparently each browser implements tasks slightly differently so in certain browsers and browser versions, the answer may not always be the same.
jakearchibald.com/2015/tasks-micro...
Nice blog.
I am also curious on how to manage blogging with JavaScript enabled? MDX?