Я тоже не до конца понимаю этот момент.
Консоль лог срабатывает до окончания функции price(), так как price- асинхронная функция
Но почему она асинхронная, если все асинхронные действия за счет await становятся синхронными?
Порядок вызова такой
1. Сначала вызывается price(), которая возвращает промис. Код, связанный с вызовом функции и возвращением промиса блокирующий (т.е. синхронный)
2. Потом вызывается console.log, который выведет в консоль то, что вернула price() т.е. в консоль вылезет промис
3. await не делает исполнения кода синхронным. Это по сути синтаксическая помощь чтобы избегать кучу вложенных .then
Вот пример фукнции без async await
function price() {
return new Promise((resolve, reject) => {
binance.prices('BTCUSDT')
.then((ticker) => resolve(`Price of BTC: ${ticker.BTCUSDT}`))
.catch((error) => reject(error))
})
}