Maison >interface Web >js tutoriel >Comment utiliser des fonctions asynchrones / attend pour écrire du code asynchrone qui a l'air et se sent synchrone?
Async / Await est une fonctionnalité puissante dans JavaScript moderne (et d'autres langages de programmation comme Python et C #) qui vous permet d'écrire du code asynchrone qui ressemble et se comporte comme un code synchrone. Voici comment vous pouvez utiliser Async / Await pour y parvenir:
Déclarer une fonction asynchrone : Pour utiliser Async / Wait, vous devez définir une fonction asynchrone. Vous pouvez le faire en ajoutant le mot-clé async
avant la déclaration de fonction. Voici un exemple:
<code class="javascript">async function fetchData() { // Asynchronous operations here }</code>
Utilisez le mot-clé await
: à l'intérieur d'une fonction asynchrone, vous pouvez utiliser le mot-clé await
avant une promesse. Cela permet à la fonction de suspendre l'exécution jusqu'à ce que la promesse se résout, puis elle reprend avec la valeur résolue. Voici un exemple utilisant l'API Fetch:
<code class="javascript">async function fetchData() { const response = await fetch('https://api.example.com/data'); const data = await response.json(); return data; }</code>
Dans cet exemple, fetch
Renvoie une promesse et await
fait que la fonction attend que la promesse se résout. Une fois résolue, la réponse est convertie en JSON à l'aide response.json()
, qui renvoie également une promesse, et await
est à nouveau utilisée.
Appeler la fonction asynchrone : Pour appeler une fonction asynchrone et gérer son résultat, vous pouvez utiliser .then()
ou l' await
dans une autre fonction asynchrone. Voici comment vous pourriez appeler fetchData
:
<code class="javascript">fetchData().then(data => console.log(data)) .catch(error => console.error('Error:', error)); // or async function useData() { try { const data = await fetchData(); console.log(data); } catch (error) { console.error('Error:', error); } }</code>
En suivant ces étapes, vous pouvez écrire des opérations asynchrones d'une manière qui semble synchrone, ce qui rend votre code plus facile à lire et à maintenir.
L'utilisation d'Async / Await offre plusieurs avantages par rapport aux méthodes de rappel traditionnelles dans la programmation asynchrone:
La gestion efficace des erreurs avec asynchronisation / attente implique d'utiliser des blocs Try / Catch dans les fonctions asynchrones. Voici comment vous pouvez le faire:
Utilisez des blocs Try / Catch : enveloppez vos expressions d'attente dans un bloc d'essai et gérez les erreurs dans le bloc de capture:
<code class="javascript">async function fetchData() { try { const response = await fetch('https://api.example.com/data'); if (!response.ok) { throw new Error('Network response was not ok'); } const data = await response.json(); return data; } catch (error) { console.error('There was a problem with the fetch operation:', error); // You can also rethrow the error or handle it further throw error; } }</code>
Propagation d'erreur : les erreurs dans les fonctions asynchrones peuvent être propagées dans la pile d'appels, vous permettant de les attraper à un niveau supérieur si nécessaire:
<code class="javascript">async function useData() { try { const data = await fetchData(); console.log(data); } catch (error) { console.error('Error in useData:', error); } }</code>
Awaits multiples : lorsque vous avez plusieurs expressions d'attente, assurez-vous qu'ils sont tous dans le bloc d'essai pour attraper toutes les erreurs potentielles:
<code class="javascript">async function processData() { try { const data1 = await fetchData1(); const data2 = await fetchData2(data1); // Process both data1 and data2 } catch (error) { console.error('Error in processData:', error); } }</code>
Lors de la mise en œuvre de fonctions asynchrones / attendre, faites attention à ces pièges courants:
Oubliant d'utiliser await
: Si vous oubliez d'utiliser await
avec une promesse à l'intérieur d'une fonction asynchrone, la fonction n'attendra pas la promesse de résoudre. Cela peut conduire à un comportement inattendu:
<code class="javascript">async function fetchData() { const response = fetch('https://api.example.com/data'); // Missing await const data = response.json(); // This will not work as expected return data; }</code>
async
sur les fonctions non-asynchrones : n'utilisez pas le mot clé async
inutilement sur les fonctions qui ne contiennent pas d'expressions d'attente, car elle peut conduire à des frais généraux en raison de la création de promesses inutiles.async
déroutant avec await
: N'oubliez pas que async
marque une fonction comme asynchrone, mais il est en await
qui s'arrête en fait jusqu'à ce qu'une promesse résout. Un malentendu cela peut conduire à un code incorrect.En étant conscient de ces pièges et en suivant les meilleures pratiques, vous pouvez utiliser efficacement l'async / attendre pour écrire du code asynchrone propre et efficace.
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!