Size: a a a

2021 October 20

R

Roma in JS
смысл решить вот эту проблему
источник

R

Roma in JS
смысл - подождать пока БД вернет результат, а потом уже console.log
источник

Я

Ярослав in JS
🠅 а это решение чем не устроило?
источник

R

Roma in JS
не помню, щас секунду накину по быстрому
источник

R

Roma in JS
кстати асинхронной функции вроде не существует
источник

Я

Ярослав in JS
Смотри, в твоей реализации получается так: возвращается промис который запускает запрос в БД и сразу резолвит undefined - соотв., balance на момент логирования в консоль еще не получила значение (запрос в БД еще "не успел"). Надо резолвить промис после того как запрос в БД завершился (то есть, резолвить результат этого запроса в качестве значения).
источник

R

Roma in JS
а где же резолвить
источник

R

Roma in JS
запрос к БД совершился, результат должен быть записан в переменную. далее ресолв
источник

Я

Ярослав in JS
Так вызов метода query оборачивать в промис, и резолвить соответственно в коллбэке этого метода (в том коллбэке, который вызывается в случае успешного выполнения).
источник

Я

Ярослав in JS
По факту и получается "далее", ведь так ты отрезолвишь результат при его (результата) получении.
Метод вызывает коллбэк успеха - резолв, и промис исполняется. А пока коллбэк не вызван, промис в состоянии ожидания (pending), и использование await позволяет "приостановить" асинхронную функцию пока результат не поступит. В этом и суть!))
источник

Я

Ярослав in JS
Может пока что стоит не обращать внимания на сахарные async и await, а поиграть с .then и .catch... разобраться, как промисы вообще устроены, как они работают.
Промисы ведь по сути "те же коллбэк-функции, вид сбоку".
источник

R

Roma in JS
да я вижу что не понимаю
источник

R

Roma in JS
разве здесь есть какая-то альтернатива
источник

Я

Ярослав in JS
источник

Я

Ярослав in JS
Смотря что считать альтернативой.
Можно ли превратить асинхронный код в синхронный - нет, конечно же нельзя (это очень важно уяснить в самом начале, а то синтаксический сахар может создать ложное впечатление типа "await напишу, и получится синхронно").
Промисы существуют для того чтобы сделать работу с асинхронным кодом удобнее - и не более того. Принцип выполнения операций остается тем же.
источник

R

Roma in JS
код не работает к сожалению (строка
queryResult = await .....
источник

R

Roma in JS
await is only valid in async function
источник

Я

Ярослав in JS
Поэтому я и написал в том сообщении: "...и в какой-либо асинхронной функции: ...".
источник

R

Roma in JS
действительно
источник

Я

Ярослав in JS
Ключевое слово await работает только в async функциях.
источник