gpt4 book ai didi

javascript - Intellij Idea 警告 - "Promise returned is ignored"与 async/await

转载 作者:IT老高 更新时间:2023-10-28 21:54:14 33 4
gpt4 key购买 nike

我在 Node.js v7.3 的代码中使用 Express.js。在此,我创建了一个 User Router,它将请求转发到我的 User Controller

我在 User Controller 中使用 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});
}
};

如果我只使用 native promise 编写相同的登录方法,那么我不会收到此警告。我在这里理解有什么问题还是 IntelliJ 有问题?

编辑 -

感谢@Stephen,我知道异步函数返回一个 promise ,但如果 Intellij 识别出异步函数没有返回任何内容并且没有显示该警告,因为当我链接 .then()login() 函数之后,它提供了一个 undefined 对象到 then 结果中。这意味着如果我们没有从 async 函数显式返回一些东西,那么 undefined 会被返回?

最佳答案

userController.login() 函数返回一个 Promise,但您并没有通过使用它的 then() 函数对 Promise 的结果做任何事情。

例如:

userController.login(req, res).then(() => {
// Do something after login is successful.
});

或者在 ES2017 语法中:

await userController.login(req, res);

如果您实际上不想在那里做任何事情,我想您可以忽略警告。警告主要存在,因为没有在 promise 上使用 then() 函数通常是代码异味。

关于javascript - Intellij Idea 警告 - "Promise returned is ignored"与 async/await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41278900/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com