如何从异步函数中获取价值?

时间:2019-02-09 16:26:21

标签: javascript node.js postgresql async-await

我正在尝试从本地数据库中获取值,但是我只能获得'Promise {}'。这是我在互联网上找到的代码。下面的代码应返回一个包含表行的结果对象,但我只是答应。

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

1 个答案:

答案 0 :(得分:1)

async函数始终返回承诺。该承诺的已解析值是函数中的代码返回的任何值。因此,要获得承诺的价值,您可以使用await.then();

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

JavaScript没有免费的午餐。异步获取的值只能从异步函数(通过回调或promise或其他类似的异步机制)返回。

或者,如果调用者本身是异步函数,则可以使用await

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