Je viens de passer au nœud 8 et je veux commencer à travailler avec async/wait. J'ai rencontré une erreur qui m'a pris du temps à résoudre et je me demandais en fait s'il y avait une manière plus gracieuse. Je ne voulais pas refactoriser l'ensemble de la fonction à ce stade dans le temps en raison de tous les refacteurs secondaires qu'elle entraînerait.
async doSomething(stuff) {
...
return functionThatReturnsPromise()
.then((a) => ...)
.then((b) => ...)
.then((c) => {
const user = await someService.createUser(stuff, c);
user.finishSetup();
});
};
est-il possible d'utiliser await
dans la chaîne de promesse sans avoir à refactoriser tout ce qui précède pour être async
également?
Le rappel n'est pas déclaré en tant que fonction async
. Vous pouvez uniquement await
a Promise
directement à l'intérieur d'une fonction async
.
async doSomething(stuff) {
// ...
return functionThatReturnsPromise()
.then((a) => /* ... */)
.then((b) => /* ... */)
.then(async (c) => {
const user = await someService.createUser(stuff, c);
return user;
});
};
De plus, vous ne devriez pas avoir besoin pour utiliser then
si vous utilisez les fonctions async
.
async doSomething(stuff) {
// ...
const a = await functionThatReturnsPromise();
const b = // ...
const c = // ...
const user = await someService.createUser(stuff, c);
return user;
};