【发布时间】:2017-05-08 05:01:58
【问题描述】:
我正在使用 try catch 语句。在我的 try 语句中,我只想返回从 try catch 语句之外定义的函数中获得的值。但是,这些值是未定义的。
我在下面添加一个代码sn-p:
const request = User.friendRequest(userId, friendId, (err, friendshipRequest) => {
if (err) throw err;
return friendshipRequest;
});
如果我在回调函数中使用 console.log(friendshipRequest),一切都像魅力一样,我得到了我想要的 JSON 对象。但是,当我尝试在 try catch 语句中使用 const request 时 - 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在您将回调传递给它时似乎没有返回承诺。 -
undefined value in try catch的可能重复项?!
标签: javascript ecmascript-6 async-await