Здравствуйте!
Борюсь с промисами, но не могу добиться адекватного результата.
Создаю функцию, которая возвращает новый промис с данными в resolve.
Создаю асинхронную функцию, где с помощью await дожидаюсь этих данных и записываю в переменную.
Если эту переменную выводить с консоль, то она, естественно, выводится, но при попытки её возврата через return - Promise {status: "pending"}
Вот код:
function newPromise () {
return new Promise ((resolve) => {
resolve("some result")
})
}
async function getResult () {
let str = await newPromise()
console.log(str) // успешно
return str
}
let str = getResult()
console.log(str) // Promise {status: "pending"}
Я понимаю, что console.log в функции выполняется после всего остального кода и поэтому результат выводится. Но ведь await по идее должен тормозить выполнение кода в функции до статуса промиса Resolved, соответственно возврат должен происходить уже с данными, но в переменную все равно пишется pending.
С использованием .then тоже не получается присвоить в переменную.
Все примеры в интернете (включая MDN) используют console.log, с которым проблем нет.
Очень прошу объяснить пошагово, почему код не рабочий и как всё-таки получить
Заранее спасибо.