Leçons du module (2/4)
async / await
async/await est une syntaxe plus claire pour travailler avec les Promise : le code se lit comme du code synchrone,
mais utilise sous le capot exactement les mêmes Promise que la leçon précédente.
async function
Une fonction déclarée avec async retourne toujours une Promise.
async function quaranta() {
return 40;
}
quaranta(); // Promise { 40 }
quaranta().then((v) => console.log(v)); // 40Même si vous retournez une valeur « normale », la fonction l'enveloppe dans une Promise résolue.
await
Dans une async function, vous pouvez placer await devant une Promise : l'exécution se met en pause
jusqu'à ce que la Promise soit résolue, puis continue avec la valeur résolue.
async function somma() {
const a = await Promise.resolve(10);
const b = await Promise.resolve(20);
return a + b; // 30
}Équivalent avec .then (plus verbeux) :
function somma() {
return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}await propage les erreurs
Si la Promise est rejetée, await relève l'erreur. Vous pouvez la capturer avec un try/catch
classique :
async function leggi() {
try {
const x = await Promise.reject(new Error('no'));
return x;
} catch (err) {
return 'errore: ' + err.message;
}
}
leggi(); // Promise { 'errore: no' }Fonctions fléchées async
const raddoppia = async (n) => n * 2;
raddoppia(5); // Promise { 10 }À vous de jouer
Définissez une `async function addOne(p)` qui reçoit une Promise contenant un nombre et retourne (sous forme de Promise) le nombre + 1. Utilisez await.
Afficher l'indice
const n = await p; return n + 1;
Solution disponible après 3 tentatives
Exercice de révision
Définissez `sumTwo(pa, pb)` en mode async : reçoit deux Promise contenant des nombres, retourne leur somme. Utilisez deux await séquentiels.
Afficher l'indice
await ognuna, poi return a + b.
Solution disponible après 3 tentatives