Проваливание промиса

Всем добрый день, проблема с пониманием термина "проваливание промиса" и с решением двух задач. Если что-то приходит .then() отличное от функции,например .then(console.log("4")), то это считывается, как .then(null), но что происходит дальше? Этот then перемещается вверх в микротасках или работает как синхронный код?

const foo = async() => {
  console.log('1');
  return 100;
}

const bar = async() => {
  console.log('2');
  const r = await foo();
  console.log(r);
  foo().then((res) => console.log(res))
  await console.log('3');
  console.log(await '4');
}

bar()
//Ответ: 2 1 100 1 3 100 4

Почему в этом примере кода "3" всплывает, а "4" нет

console.log('this is the start');

Promise.resolve(console.log('promise 1')); //Почему этот консоль лог выполняется как синхронный?

setTimeout(function cb1() {
  console.log("timeout 0");
}, 2000)

setTimeout(function cb() {
  console.log("timeout 1");
})

console.log('this is just a message');

setTimeout(function cb1() {
  console.log('timeout 2')
}, 0);

new Promise((res, rj) => res('promise 2')).then(console.log)

console.log('this is the end?')

Почему тут Promise.resolve(console.log('promise 1')); Проблема с пониманием этой строчки.


Ответы (0 шт):