我在Node.js v7的代码中使用Express.js.3.在这里,我创建了一个User Router
,将请求转发给我的User Controller
.
我在User Controller
中使用async/await来进行异步调用.问题是IntelliJ给了我一个警告说
忽略从login()返回的promise .
问题是我甚至没有从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});
}
};
如果我只使用本机promise 编写相同的登录方法,那么我不会收到此警告.我是理解错了还是IntelliJ错了?
EDIT -
多亏了@Stephen,我明白异步函数会返回一个promise ,但如果Intellij识别出异步函数没有返回任何东西,并且没有显示该警告,那不是更好吗?因为当我在login()
函数后链接.then()
时,它会在随后的结果中提供一个undefined
对象.这意味着,如果我们不显式地从异步函数返回某些内容,那么将返回undefined?