L'auteur de la note, dont nous publions la traduction aujourd'hui, dit qu'il s'est à peine abstenu de ne pas l'appeler «Enfin - l'opportunité que tout le monde attendait» ou de plaisanter sur ce sujet. En fin de compte, il a décidé de se passer de blagues et de simplement parler de la fonctionnalité vraiment importante et utile des objets Promise.
Si vous commencez tout juste Ă  apprendre JavaScript et n'ĂȘtes pas trop familier avec les promesses (parfois elles sont appelĂ©es «promesses», «rĂ©sultats promis», «objets promis»), alors vous pourriez ĂȘtre intĂ©ressĂ© par nos publications prĂ©cĂ©dentes sur ce sujet:
â 
Promesses dans ES6: motifs et anti-motifsâ 
JavaScript: mĂ©thodes de programmation asynchronesâ 
JavaScript ES8 et transition vers async / attenteâ 
Async / attente: 6 raisons d'oublier les promessesâ 
Ăchapper Ă  l'enfer asynchrone / attendreâ 
JavaScript ES6: Ă©crivez moins - faites plusâ 
Guide des promesses pour ceux qui veulent les trierâ 
Conception JavaScript asynchrone / en attente: points forts, piĂšges et modĂšles d'utilisationâ 
Utilisation de promesses en JavaScriptPromise.prototype.finally, méthode
L'article 
25.6.5.3 de la norme ECMAScript 2018 est dédié à la 
méthode Promise.prototype.finally . Selon 
caniuse.com , le niveau de support pour cette mĂ©thode est d'environ 81%. Cette mĂ©thode peut Ă©galement ĂȘtre utilisĂ©e dans Node.js.
La méthode de la promesse finale est l'une des innovations les plus importantes de la norme, qui vous permet de spécifier une fonction qui sera exécutée quel que soit le résultat de la promesse. Une telle fonction sera remplie si la promesse est résolue avec succÚs et si elle est rejetée.
Prenons un exemple:
 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success!!!'); }, 2000); }); 
Il s'agit d'une promesse parfaitement courante qui se résout aprÚs 2000 millisecondes. Si aprÚs cela, nous devons effectuer une action, nous aurons besoin d'un bloc 
then :
 myPromise.then( result => { console.log(result) }, failMessage => { console.log(failMessage) } ); 
Deux fonctions anonymes sont passées à la méthode 
then . Le premier sera exécuté si la promesse est résolue avec succÚs. Le second, c'est quand il est rejeté. Notre promesse se termine toujours avec succÚs, le message de 
success!!! sera toujours affiché dans la console 
success!!! . Tout cela est trÚs bien, mais qu'en est-il s'il est nécessaire que certaines actions soient menées aprÚs le rejet de la promesse, et aprÚs l'achÚvement réussi de son travail? Ici, la méthode 
finally nous aidera:
 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success!!!'); }, 2000); }); myPromise.then( result => { console.log(result) }, failMessage => { console.log(failMessage) } ).finally(finallyMessage => { console.log('FINALLY!!')}); 
Quelle que soit la fin de la promesse, le texte sera 
FINALLY!! affiché en plus du message correspondant à la console 
FINALLY!! , ce qui nous indique que la fonction de rappel passée à la méthode 
finally fonctionne quand mĂȘme. Afin de vĂ©rifier cela - vous pouvez 
expérimenter .
Résumé
Le fait que la mĂ©thode Promise.prototype.finally soit apparue dans ES2018 suggĂšre qu'un niveau trĂšs Ă©levĂ© de prise en charge du navigateur peut ĂȘtre attendu dans un avenir prĂ©visible. Cela signifie que ce que vous aviez auparavant Ă  utiliser des outils auxiliaires créés par des dĂ©veloppeurs tiers peut dĂ©sormais ĂȘtre implĂ©mentĂ© Ă  l'aide d'outils standard.
Dans quelles situations la méthode 
Promise.prototype.finally peut- 
Promise.prototype.finally ĂȘtre utile? Par exemple - si, lorsque vous dĂ©marrez la Promesse utilisĂ©e pour tĂ©lĂ©charger quelque chose, une animation commence Ă  jouer, vous pouvez 
finally terminer cette animation. Dans le bloc 
finally , vous pouvez, par exemple, fermer une certaine fenĂȘtre modale. En fait, il existe de nombreuses situations dans lesquelles la mĂ©thode 
finally peut ĂȘtre utile.
Chers lecteurs! Avez-vous utilisé des substituts à la méthode finalement promises avant ses implémentations standard?
