javascript - 尝试将 await 函数的返回值设置为常量时接收未定义

标签 javascript node.js async-await

我正在尝试为 await 函数设置一个常量以从 getInfo 获取返回信息。我可以在返回对象之前对其进行长时间的安慰。但是当我尝试在帖子中控制台记录值时,我得到了未定义的值。我做错了什么?

router.post('/', function(req,res,next) {
    (async function(){
        const modifierInfo = await getInfo();
            console.log("returns undefined", modifierInfo)
            //do more with return info after
    })().catch(next)
});

const getInfo = () => {
    (async function(){
        try {
            const ps = new sql.PreparedStatement(pool);
            const statement = await ps.prepare("selectQuery");
            const result = await statement.execute();
            const modifierInfo = await result.recordset[0];
            await statement.unprepare();
            console.log("returns object", modifierInfo)
            return modifierInfo;
        } catch (err) {
            console.log(err)
        }
    })()
};

最佳答案

我认为问题在于 getInfo 本身需要异步。尝试这样的事情:

router.post('/', async (req,res,next) => {
    try {
        const modifierInfo = await getInfo(req.body.groupID);
        console.log(modifierInfo)
    } catch(err) {
        console.log(err)
    }
});

async function getInfo(groupID) {
    try {
        const ps = new sql.PreparedStatement(pool);
        const statement = await ps.prepare("selectQuery");
        const result = await statement.execute();
        const modifierInfo = await result.recordset[0];
        await statement.unprepare();
        console.log("returns object", modifierInfo)
        return modifierInfo;
    } catch (err) {
        console.log(err)
    }
};

关于javascript - 尝试将 await 函数的返回值设置为常量时接收未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622413/

相关文章:

javascript - 我的 Electron 应用程序在没有任何日志记录的情况下无法启动

javascript - 将角色列表传递给子组件

Javascript函数不会打印

mysql - Sequelize 'where' 在父表和子表上

C# await X 和 .Result 在 ToDictionary() 中不等价?

javascript - window.location 和 SEO

javascript - 直接在 postgres 中插入可以工作,但使用 Sequelize 则不行

node.js - Facebook 聊天机器人帖子回调在 NodeJS 中没有正确的数据结构

javascript - 如何在等待 promise 解决时执行代码?

node.js - 未处理的 promise 拒绝警告 : Callback was already called (Loopback remote method)