我在代码中使用 快递和 Node.js v7.3。在这里,我创建了一个 User Router
,它将请求转发给我的 User Controller
。
我在 User Controller
内部使用异步/等待来执行异步调用。问题是 IntelliJ 给了我一个警告
从 login ()返回的承诺将被忽略。
问题是我甚至没有从 login()
方法返回任何东西。
这是密码
UserRouter.js
router.post('/login', function (req, res, next) {
userController.login(req, res); // I get the warning here
});
UserController.js
exports.login = async function (req, res) {
try {
const verifiedUser = await someFunction(req.body.access_code);
let user = await User.findOrCreateUser(verifiedUser);
res.status(200).send(user);
}
catch (err) {
res.status(400).send({success: false, error: err});
}
};
如果我只使用本机承诺编写相同的登录方法,那么我不会得到这个警告。是我理解错了还是 IntelliJ 有错?
编辑
多亏了@Stephen,我明白了异步函数返回一个承诺,但是如果 Intellij 识别出异步函数没有返回任何东西,并且没有显示这个警告,那不是更好吗? 因为当我在 login()
函数之后链接一个 .then()
时,它会提供一个 undefined
对象到当时的结果中。这意味着如果我们不显式地从异步函数返回一些东西,那么未定义的东西就会被返回?