Intellij Idea Warnung - "Versprechen zurückgegeben wird ignoriert" mit aysnc/erwarten
Ich bin mit Express.js in meinem code mit Node.js v7.3. In diesem habe ich einen User Router
die leitet die Anfragen an meine User Controller
.
Bin ich mit async/await innerhalb der User Controller
asynchrone Aufrufe. Das problem ist, dass IntelliJ gibt mir eine Warnung, die sagen, dass
Versprechen zurück von login() wird ignoriert.
Die Sache ist ich bin mir auch nicht zurückbringen, nichts von den login()
Methode.
Hier ist der code -
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});
}
};
Wenn ich Schreibe, die gleichen login-Methode, die mithilfe der systemeigenen verspricht nur dann verstehe ich nicht, diese Warnung. Verstehe ich etwas falsch oder ist IntelliJ Schuld?
BEARBEITEN -
Danke an @Stephan, ich verstehe, dass eine async-Funktion gibt ein Versprechen, aber wäre es nicht besser, wenn Intellij identifiziert, wird nichts zurückgegeben, die von der asynchronen Funktion und nicht zeigen, dass die Warnung, denn wenn ich eine Kette .then()
nach der login()
- Funktion, es bietet eine undefined
Objekt in das damalige Ergebnis. Es bedeutet, dass wenn wir nicht wieder etwas von dem async-Funktion explizit, dann wird undefined zurückgegeben wird?
InformationsquelleAutor Jyotman Singh | 2016-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Funktion deklariert "async" gibt ein Versprechen per definition.
Siehe zum Beispiel https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
Jedoch die IDEE, die Warnung ist nur eine Prüfung. Drücken Sie "alt-enter, rechts" auf die Warnung, und ändern Sie die Inspektions-Ebene um die Warnung Weg.
Die Prüfung ist in der "JavaScript -> Wahrscheinlich Fehler" Kategorie und ist mit der Bezeichnung "Ergebnis der Methode call der Rückkehr ein Versprechen ignoriert".
InformationsquelleAutor Stephen Friedrich
Den
userController.login()
Funktion gibt ein Versprechen, aber Sie sind nicht etwas zu tun mit dem Ergebnis aus dem Versprechen, durch den Einsatz seinerthen()
Funktion.Beispiel:
oder in der ES2017 syntax:
Wenn Sie nicht wirklich wollen, etwas zu tun gibt, ich denke, man kann einfach die Warnung ignorieren. Die Warnung ist meistens dort, weil Sie nicht mit der
then()
Funktion auf ein Versprechen ist in der Regel ein code smell.Also, ist es ein guter Ansatz, zu ignorieren, ein Versprechen, Funktion, Rückgabewert, wenn ich keine Notwendigkeit in der Reihe der Ausführung von meinem code ?
Wenn Sie wirklich nicht kümmern, wenn die Funktion erfolgreich ist oder scheitert, und nicht wollen, etwas zu tun mit den zurückgegebenen Wert, wenn das Versprechen gelöst hat, können Sie getrost weglassen
.then()
nennen.InformationsquelleAutor Robba
wenn Sie wirklich manisch, wie mir und die
then()
ist nicht erforderlich, aber Sie müssen, dass die Warnung geht Weg, eine alternative ist:InformationsquelleAutor winter