Функция async
всегда возвращает обещание.Разрешенным значением этого обещания является любое значение, которое возвращает код в вашей функции.Таким образом, чтобы получить значение из этого обещания, вы используете либо await
, либо .then()
;
getFromDB().then(val => {
// got value here
console.log(val);
}).catch(e => {
// error
console.log(e);
});
В Javascript нет бесплатного обеда.Значение, полученное асинхронно, может быть возвращено только из функции асинхронной (посредством обратного вызова или обещания или другого аналогичного асинхронного механизма).
Или, если сам вызывающий объект был асинхронной функцией, то вы можете использовать await
:
async function someOtherFunc() {
try {
let val = await getFromDb();
console.log(val);
} catch(e) {
// error
console.log(e);
}
}