Я пытаюсь установить константу для функции ожидания, чтобы получить возвращаемую информацию от getInfo. Я могу долго утешать объект, прежде чем вернуть его. Но когда я пытаюсь записать в консоль значение в сообщении, я получаю неопределенное значение. Что я делаю неправильно?
router.post('/', function(req,res,next) {
(async function(){
const modifierInfo = await getInfo();
console.info("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.info("returns object", modifierInfo)
return modifierInfo;
} catch (err) {
console.info(err)
}
})()
};
Пробовал let modifierInfo = await getModifierGroupInfo все еще undefined, когда я console.info это
если вы определяете свои функции (и свой маршрут в этом отношении) как асинхронные, вам не нужно оборачивать их в самовыполняющиеся анонимные функции. Я предполагаю, что getModifierGroupInfo на самом деле должно быть getInfo, это правильно или нет?
Где определяется getModifierGroupInfo? Все, что я вижу, это получить я иду.
Извините, getModifierGroupInfo должен быть getInfo, спасибо @HolyMoly



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, проблема в том, что getInfo сам по себе должен быть асинхронным. попробуйте что-то вроде этого:
router.post('/', async (req,res,next) => {
try {
const modifierInfo = await getInfo(req.body.groupID);
console.info(modifierInfo)
} catch(err) {
console.info(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.info("returns object", modifierInfo)
return modifierInfo;
} catch (err) {
console.info(err)
}
};
рад помочь, async/await поначалу тоже был сложным для меня .... до сих пор иногда;)
Что происходит, когда вы пытаетесь установить для него значение let вместо const?