Получение undefined при попытке установить возвращаемое значение функции await как константу - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь установить константу в функцию 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)
        }
    })()
};

1 Ответ

2 голосов
/ 11 апреля 2019

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