Maison > interface Web > js tutoriel > le corps du texte

Maîtriser le JavaScript asynchrone : explication des promesses, de l'asynchrone/de l'attente et des rappels

Patricia Arquette
Libérer: 2024-11-10 07:08:02
original
329 Les gens l'ont consulté

Mastering Asynchronous JavaScript: Promises, Async/Await, and Callbacks Explained

JavaScript est à la fois polyvalent et réactif ; savoir utiliser l'asynchronie fait ressortir le meilleur d'elle-même. De la récupération des résultats de l'API au chargement de fichiers, le développement asynchrone nous permet de faire plusieurs choses à la fois, sans blocage. Nous explorerons trois approches différentes pour écrire du code asynchrone en JavaScript : Promises, Async/Await et Callbacks - comprenez quand les utiliser et comment les implémenter.

Pourquoi JavaScript asynchrone ?

Imaginez que votre application Web se fige à chaque fois qu'elle extrait des données d'une API ou attend le téléchargement d'un fichier image volumineux. Ce n’est pas le meilleur des cas, non ? C'est là qu'intervient le JavaScript asynchrone. Il permet à votre programme de continuer à s'exécuter en attendant la fin de certaines tâches, offrant ainsi une expérience utilisateur beaucoup plus fluide.

  1. Comprendre les rappels Un rappel est une fonction qui est passée en argument à une autre fonction, qui vous permet d'exécuter une fonction une fois qu'une tâche asynchrone est terminée. Les rappels font partie des techniques les plus anciennes de gestion des opérations asynchrones en JavaScript.

Exemple : rappel de base

fonction fetchData(callback) {
setTimeout(() => {
console.log("Données récupérées");
rappel();
}, 2000);
>

fonction processData() {
console.log("Traitement des données.");
>

fetchData(processData);
Dans cet exemple, fetchData attend deux secondes puis appelle processData une fois l'opération terminée. Cela fonctionne bien pour des scénarios simples, mais si vous commencez à empiler plusieurs rappels, vous pouvez entrer dans « l'enfer des rappels » où les rappels profondément imbriqués rendent votre code difficile à lire et à maintenir.

Conseil : Si vous vous retrouvez avec plus de trois rappels imbriqués, envisagez de passer à Promises ou Async/Await.

  1. Promesses : une meilleure façon de gérer l'async Une promesse est un objet qui représente l'achèvement (ou l'échec) éventuel d'une opération asynchrone. Au lieu d'utiliser l'imbrication, Promises fournit les méthodes .then() et .catch() qui le rendent plus lisible.

Exemple : Utiliser des promesses

fonction fetchData() {
renvoyer une nouvelle promesse ((résoudre, rejeter) => {
setTimeout(() => {
solve("Données récupérées avec succès!");
}, 2000);
});
>

fetchData()
.then((message) => {
console.log(message);
return "Traitement des données.";
})
.then((processingMessage) => {
console.log(processingMessage);
})
.catch((erreur) => {
console.error("Erreur :", erreur);
});
Ici, avec chaque .then(), une tâche peut être gérée séquentiellement, ce qui peut être plus facile à lire plutôt que des rappels profondément imbriqués. Les promesses gèrent également les erreurs avec plus d'élégance et vous permettent de les gérer au même endroit avec .catch().

Conseil : appliquez des promesses lorsque vous devez exécuter plusieurs tâches dans une séquence, l'une après l'autre, la précédente étant terminée.

  1. Async/Await : l'approche moderne La syntaxe async et wait est apparue dans ES8 et offre une manière encore plus propre de travailler avec Promises. Il vous permet d'écrire du code asynchrone comme s'il était synchrone, donc beaucoup plus facile à lire.

Exemple : Async/Await

Fonction asynchrone fetchData() {
essayez {
const data = wait new Promise((resolve) =>
setTimeout(() => solve("Données récupérées avec succès!"), 2000);
});
console.log(données);

const processMessage = await new Promise((resolve) => {
  setTimeout(() => resolve("Processing data."), 1000);
});
console.log(processMessage);
Copier après la connexion

} capture (erreur) {
console.error("Erreur :", erreur);
>
>

fetchData();
Avec async et wait, vous évitez de chaîner les appels .then() afin que le code ressemble beaucoup au code synchrone. C'est une excellente pratique pour la lisibilité surtout lorsque les opérations impliquées sont complexes.

Meilleure pratique : c'est très lisible et, par conséquent, c'est toujours la meilleure approche en utilisant Async/Await quand et où cela est possible dans votre application JavaScript moderne.

Où utiliser lequel

Rappels : à utiliser pour de petites tâches qui ne sont pas complexes et dont la lisibilité n'est pas un problème. Rarement utilisé pour de simples appels asynchrones.

Promesses : Il est parfaitement adapté à la gestion des erreurs et aux processus séquentiels. Les promesses vous permettent d'éviter le code compliqué avec des rappels profondément imbriqués.

Async/Await : meilleur pour la lisibilité et un code plus propre lorsqu'il s'agit d'effectuer des opérations dans une séquence.

Derniers conseils pour maîtriser le JavaScript asynchrone
Essayez chaque méthode : plus vous pratiquez chaque méthode, mieux vous comprendrez la programmation asynchrone et saurez quand utiliser laquelle.

Gérez les erreurs avec soin : dans Promise et Async/Await, utilisez la gestion des erreurs avec .catch() ou try.catch.

Optimisation des performances : pour les tâches pouvant être exécutées en parallèle, utilisez Promise.all pour les exécuter en parallèle.

Prêt pour une plongée en profondeur ? Essayez d'implémenter des techniques asynchrones dans vos projets pour voir la différence qu'elles font. La maîtrise de la programmation asynchrone fera passer vos compétences JavaScript au niveau supérieur et vous aidera à créer des applications fluides et réactives.

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal