Sobes.tech
Junior — Senior

How will the output to the console occur when mixing setTimeout, Promise, and recursion

livecode

Task condition

It is necessary to determine the sequence of output to the console when the program includes synchronous instructions, microtasks (Promise), macro tasks (setTimeout), and also has a recursive function call.

console.log(1);

setTimeout(() => {
  console.log(2);
});

Promise.resolve().then(() => {
  console.log(3);
});

console.log(4);

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

console.log(6);

const foo1 = () => {
  console.log('foo1');
  return Promise.resolve().then(foo1);
};

foo1();