我正在使用 try catch 语句。在我的 try 语句中,我只想返回从 try catch 语句外部定义的函数获得的值。但是,这些值是未定义的。
我在下面添加一个代码片段:
const request = User.friendRequest(userId, friendId, (err, friendshipRequest) => {
if (err) throw err;
return friendshipRequest;
});
如果我在回调函数中使用 console.log(friendshipRequest) ,一切都会像魅力一样工作,我会得到我想要的 JSON 对象。但是,当我尝试使用 const request
时在 try catch 语句中 - const request
变得未定义。
try {
return res.status(201).json({
error: false,
request,
});
} catch (e) {
return res.status(400).json({ error: true, message: e.errsmg });
}
完整的代码如下
export const sendFriendRequest = async (req, res) => {
const { userId, friendId } = req.params;
const request = await User.friendRequest(userId, friendId, (err, friendshipRequest) => {
if (err) throw err;
return friendshipRequest;
});
try {
return res.status(201).json({
error: false,
request,
});
} catch (e) {
return res.status(400).json({ error: true, message: e.errsmg });
}
};
最佳答案
我假设 User.friendRequest()
返回一个 promise ,也可以使用回调,但你不应该同时使用两者(await
使用 promise ,但您还传递了回调)。
只需使用 promise :
export const sendFriendRequest = async (req, res) => {
const { userId, friendId } = req.params;
try {
const request = await User.friendRequest(userId, friendId);
return res.status(201).json({
error: false,
request,
});
} catch (e) {
return res.status(400).json({ error: true, message: e.errsmg });
}
};
关于javascript - try catch 中未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43836415/