Как получить значение из асинхронной функции? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь получить значения из своей локальной базы данных, но все, что я могу получить, это 'Promise {}'.Вот мой код, который я нашел в интернете.Приведенный ниже код должен возвращать объект результата, который содержит строки таблицы, но я получаю только обещание.

const getFromDB = async() =>{
    return  await pool.query('SELECT * FROM services');
};

1 Ответ

0 голосов
/ 09 февраля 2019

Функция 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);
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...