Порядок console.log с Promise и setTimeout

Medium
event-looppromisessetTimeoutmicrotasksmacrotasksjavascriptTinkoff

В каком порядке выведутся сообщения и почему?

console.log(1);

setTimeout(function () {
  console.log(2);
});

Promise.resolve(3).then(console.log);

console.log(4);

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

console.log(6);

Реализуйте функцию executionOrder(), которая возвращает строку с числами в порядке их вывода, разделёнными пробелом. Например: "1 2 3".

Подсказка

Проверяют понимание Event Loop: как JavaScript разделяет синхронный код, микротаски (Promise.then) и макротаски (setTimeout). Ждут правильный порядок и объяснение — почему setTimeout(fn, 0) выполняется позже промиса, даже если зарегистрирован раньше.

Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода