Combiner Async/Await et .then() avec Promise Conversions
En JavaScript, async/await est un mécanisme puissant pour gérer les opérations asynchrones . Cependant, il existe des situations dans lesquelles il peut être pratique de combiner async/await avec .then(), notamment lors de la conversion de promesses en fonctions asynchrones.
Considérez l'exemple suivant :
<code class="javascript">async apiCall(params) { var results = await this.anotherCall() .then(results => { //do any results transformations return results; }) .catch(error => { //handle any errors here }); return results; }</code>
Ici , la méthode anotherCall() renvoie une promesse, qui est convertie en fonction asynchrone à l'aide de .then().catch(). Cela nous permet d'effectuer toutes les transformations ou gestion des erreurs nécessaires avant de renvoyer les résultats.
Certains développeurs préfèrent utiliser async/await avec .catch() au lieu de try/catch pour sa compacité. Par exemple :
<code class="javascript">async function asyncTask() { throw new Error('network') } async function main() { const result = await asyncTask().catch(error => console.error(error)); console.log('result:', result) } main();</code>
Dans cet exemple, la fonction asyncTask() renvoie une erreur, qui est détectée par la méthode .catch() dans l'appel d'attente. Cela empêche l'erreur de se propager et nous permet de la gérer gracieusement dans la fonction main().
Il est important de noter que la méthode .then() crée et renvoie une nouvelle promesse, même si la promesse d'origine est renvoyée. par anotherCall() déjà résolu. Ce comportement peut entraîner des effets secondaires inattendus, surtout si plusieurs promesses sont enchaînées à l'aide de .then().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!