Petr M
Petr M

Reputation: 163

How to get value from async function?

I am trying to get values from my local database, but all I can get is 'Promise{<Pending>}'. Here is my code that I found on the internet. The code below should return a result object that contains table rows, but I am only getting promise.

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

Upvotes: 1

Views: 12417

Answers (1)

jfriend00
jfriend00

Reputation: 708156

An async function always returns a promise. The resolved value of that promise is whatever value the code in your function returns. So, to get the value out of that promise, you use either await or .then();

getFromDB().then(val => {
    // got value here
    console.log(val);
}).catch(e => {
    // error
    console.log(e);
});

There is no free lunch in Javascript. A value obtained asynchronously can only be returned from a function asynchronously (via callback or promise or other similar async mechanism).

Or, if the caller itself was an async function, then you could use await:

 async function someOtherFunc() {
     try {
         let val = await getFromDb();
         console.log(val);
     } catch(e) {
        // error
        console.log(e);
     }
 }

Upvotes: 6

Related Questions