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

qpgpyjmq  于 2022-12-18  发布在  Node.js
关注(0)|答案(1)|浏览(191)

我正在尝试从本地数据库获取值,但只能获取“Promise{}”。以下是我在Internet上找到的代码。下面的代码应返回包含表行的结果对象,但只能获取Promise。

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

ie3xauqp1#

一个async函数总是返回一个promise,这个promise的解析值就是你的函数返回的值,所以,要从这个promise中得到这个值,你可以使用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);
     }
 }

相关问题