Проваливание промиса
Всем добрый день, проблема с пониманием термина "проваливание промиса" и с решением двух задач. Если что-то приходит .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'));
Проблема с пониманием этой строчки.