Но почему же это работает в console.log ()
Это не так. Аргументы, передаваемые в функцию, всегда оцениваются до , когда вызывается функция. То есть await some_promise()
оценивается до вызова console.log
, а не в it. console.log
не является async
. Ваш код эквивалентен
const result = await some_promise();
console.log(result);
или
some_promise.then(result => console.log(result))
console.log
ничего не знает о том факте, что ценность, которую вы ему передаете, возникла из обещания.
Если console.log является асинхронным, то почему же он работает без обещаний?
Функция async
- возвращает обещание
- позволяет использовать
await
для развёртывания обещаний.
Вот и все. Это не ограничивает, какие значения вы можете передать ему. Таким образом, даже если console.log
было async
, вы можете передать ему любое значение.