javascript – Intellij Idea警告 – 使用aysnc / await忽略“返回的Promise”
作者:互联网
我在我的代码中使用Express.js和Node.js v7.3.在这里我创建了一个用户路由器,它将请求转发给我的用户控制器.
我在用户控制器内部使用async / await来进行异步调用.问题是IntelliJ给了我一个警告说
Promise returned from login() is ignored.
问题是我甚至没有从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,我知道async函数会返回一个promise,但如果Intellij发现没有从async函数返回任何内容并且没有显示该警告,那就不会更好了,因为当我链接一个.then()之后login()函数,它在then结果中提供一个未定义的对象.这意味着如果我们不显式地从异步函数返回一些东西,那么返回undefined?
解决方法:
The thing is I’m not even returning anything from the login() method.
声明为“async”的函数按定义返回Promise.
参见例如https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
然而,IDEA警告只是一次检查.您可以在警告上按“alt-enter,right”并更改检查级别以使警告消失.
检查位于“JavaScript – >可能的错误”类别中,并命名为“返回承诺的方法调用结果被忽略”.
标签:javascript,node-js,intellij-idea,async-await,es6-promise 来源: https://codeday.me/bug/20191005/1856254.html