Sauter à un chapitre clé
Comprendre les promesses en Javascript
Dans ton parcours pour appréhender le monde de l'informatique, comprendre les subtilités du langage JavaScript, et plus particulièrement les promesses JavaScript, est une étape essentielle. Développées pour gérer les opérations asynchrones en JavaScript, les promesses sont des objets qui représentent l'achèvement éventuel (ou l'échec) d'une opération asynchrone et la valeur qui en résulte.Qu'est-ce qu'une promesse en JavaScript : Un aperçu
Une promesse en JavaScript est un objet qui peut produire une valeur unique dans le futur. Elle offre un moyen de gérer les opérations asynchrones, c'est-à-dire les tâches qui prennent généralement du temps, comme le chargement d'une image, l'extraction de données d'un serveur, etc., qui prennent du temps pour se terminer et s'exécutent en arrière-plan sans bloquer le fil principal.
- en attente : État initial, ni rempli ni rejeté.
- fulfilled (accomplie) : L'opération s'est terminée avec succès.
- rejetée : L'opération a échoué.
Comment fonctionnent les promesses en JavaScript
Il est instructif d'apprendre comment fonctionnent les promesses JavaScript pour exploiter pleinement la puissance de la programmation asynchrone. Un objet Promise commence dans l'état en attente. Il est ensuite réglé en étant résolu à une valeur ou rejeté avec une raison. À ces moments-là, les rappels de la promesse sont exécutés. À la base, une promesse JavaScript est composée de deux fonctions :Promise(executor)L'executor susmentionné est une fonction qui prend deux paramètres : resolve et reject.
function(resolve, reject)La fonction resolve est utilisée pour faire passer l'état de la promesse de pending à fulfilled, ce qui permet de définir une valeur résultante. La fonction reject, quant à elle, fait passer l'état de la Promesse de pending à rejected et s'accompagne d'une raison pour l'échec.
Voici une façon courante de créer une nouvelle promesse en JavaScript :
let promise = new Promise(function(resolve, reject) { // exécuteur (le code producteur) }) ;
Programmation asynchrone avec les promesses en JavaScript
La programmation asynchrone est peut-être l'une des applications les plus puissantes des promesses JavaScript. Alors que le code JavaScript traditionnel est exécuté de façon séquentielle, de haut en bas, le code asynchrone brise ce moule, permettant parfois des performances plus efficaces.C'est particulièrement utile pour les opérations qui peuvent prendre du temps, comme la récupération de données sur un serveur ou la lecture d'un fichier. Un exemple courant de programmation asynchrone en JavaScript est l'utilisation de fonctions de rappel dont l'ordre d'exécution n'est pas connu à l'avance. Ici, les promesses brillent car elles offrent une solution plus élégante et plus robuste pour gérer ces tâches.
Voici un exemple d'enchaînement :
let promise = new Promise(function(resolve, reject) { setTimeout(() => resolve(1), 1000) ; }) .then(result => { console.log(result) ; // 1 return result * 2 ; }) .then(result => { console.log(result) ; // 2 return result * 3 ; })
Exploration des méthodes Javascript Promise
Pour bien comprendre le concept et l'utilisation des promesses JavaScript, il est essentiel de se familiariser avec les différentes méthodes de promesse disponibles. En tant que fonctionnalités intégrées, ces méthodes sont accompagnées de l'objet Promise pour simplifier le traitement des opérations asynchrones.Méthodes Javascript Promise couramment utilisées
L'objet Promise intégré à JavaScript fournit plusieurs méthodes que tu peux utiliser pour interagir avec les promesses dans différents états. Examinons les plus fréquemment utilisées : 1. .then(): Cette méthode Promise est utilisée après qu'un objet Promise a été déclaré. Elle prend jusqu'à deux arguments : des fonctions de rappel pour les cas de réussite et d'échec respectivement.Comment l'utiliser :
promise.then( function(result) { /* handle successful resolution */ }, function(error) { /* handle error */ } ) ;
Comment l'utiliser :
promise.catch( function(error) { /* gérer l'erreur */ } ) ;
Comment l'utiliser :
promise.finally( function() { /* code à exécuter après le règlement de la promesse */ } ) ;
Mise en œuvre des méthodes de promesse Javascript dans la programmation
Pour illustrer la mise en œuvre des méthodes Promise dont il est question dans ton codage JavaScript, passons en revue quelques exemples illustratifs. Considère un scénario dans lequel tu veux charger une image dans une application Web. Dans ce cas, tu pourrais utiliser le constructeur Promise pour créer un nouvel objet Promise :Exemple :
let imgLoad = new Promise(function(resolve, reject) { let img = new Image() ; img.src = 'path/to/image.jpg' ; img.onload = function() { resolve(img) ; } ; img.onerror = function() { reject('Error loading image.') ; } ; }) ;
En poursuivant l'exemple ci-dessus :
imgLoad.then( function(img) { document.body.append(img) ; }, function(error) { console.log(error) ; } ) ;
Mise en œuvre de la méthode .catch()
imgLoad.then( function(img) { document.body.append(img) ; } ).catch(function(error) { console.log('Error occurred.', error) ; }) ;
Exemples de promesses en Javascript : Une visite guidée
Comprendre le concept des promesses en Javascript peut être un défi lorsque tu plonges tout juste dans l'exploration du langage de programmation. C'est là que les exemples de code peuvent renforcer ta compréhension, en t'aidant à combler le fossé entre la théorie et la pratique. Dans cette partie de notre guide, nous allons étudier un exemple simple pour les débutants, puis nous augmenterons la complexité pour une leçon plus avancée sur les promesses en JavaScript.Exemple simple de promesse JavaScript pour les débutants
Dans cette section, nous allons disséquer un exemple facile à digérer, adapté à ceux qui découvrent les promesses JavaScript pour la première fois. Notre extrait de code simule une fonction qui détermine si un utilisateur a suffisamment d'argent pour acheter un article désiré. Voici le code à étudier :let hasEnoughMoney = new Promise(function(resolve, reject) { let money = 500 ; // L'utilisateur a 500 £ let price = 400 ; // L'article coûte 400 £ if(money >= price) { resolve('Vous pouvez acheter l'article!') ; } else { reject('Désolé, mais vous n'avez pas les moyens d'acheter cet article.') ; } }) ; // Utilisation de l'objet Promise hasEnoughMoney.then(function(message) { console.log(message) ; // Enregistre "Vous pouvez acheter l'article !" }).catch(function(error) { console.log(error) ; // Enregistre "Désolé, mais vous ne pouvez pas acheter cet article." si l'utilisateur n'a pas assez d'argent }) ;Cette Promesse prend une fonction avec deux paramètres, \(resolve\) et \(reject\). Si l'utilisateur dispose d'une somme supérieure ou égale au prix de l'article (500 >= 400), nous appelons la fonction \(resolve\) avec un message de réussite. Sinon, nous appelons la fonction \(reject\) avec un message d'erreur. Nous utilisons ensuite \N(.then()\Npour gérer le cas de réussite et \N(.catch()\Npour gérer le cas d'erreur.
Exemple avancé de promesse Javascript pour les apprenants plus expérimentés
Les promesses deviennent vraiment robustes lorsqu'elles sont utilisées pour des opérations asynchrones. Penchons-nous sur un exemple plus avancé simulant une série d'opérations qui prennent du temps. La fonction ci-dessous attendra un certain nombre de secondes (paramètre), puis enregistrera un message sur la console.function waitAndLog(seconds) { return new Promise(function(resolve, reject) { if (seconds < 1 || seconds > 5) { reject('Input must be between 1 and 5.') ; } else { setTimeout(function() { resolve(`Attendu pendant ${seconds} secondes.`) ; }, seconds * 1000) ; } }) ; }Dans cet exemple, la méthode `setTimeout` est utilisée pour simuler une opération qui prend du temps. La promesse n'est résolue ou rejetée que lorsque le nombre de secondes spécifié s'est écoulé. Pour illustrer l'enchaînement des promesses, voyons comment nous pouvons utiliser cette fonction pour effectuer une série d'opérations :
waitAndLog(2) .then(function(message) { console.log(message) ; return waitAndLog(3) ; }) .then(function(message) { console.log(message) ; return waitAndLog(4) ; }) .then(function(message) { console.log(message) ; }) .catch(function(error) { console.error(error) ;}
) ;Ce script fait attendre le programme pendant 2 secondes, puis enregistre un message, puis attend 3 secondes, enregistre un autre message, et enfin attend 4 secondes de plus avant d'enregistrer un troisième message. Si quelque chose ne va pas pendant l'une de ces étapes (par exemple, si tu essaies d'attendre pendant un nombre de secondes non valide), un message d'erreur sera enregistré. Ce qu'il faut retenir de cette exécution avancée, c'est le chaînage de promesses à l'aide de la méthode \(\N- then()\N et la façon dont la fonction \N- waitAndLog\N renvoie une promesse qui est ensuite résolue et renvoyée dans l'appel \N- then()\N, ce qui facilite le traitement des séquences d'opérations asynchrones.
Apprendre le chaînage de promesses en Javascript
La phase "Javascript Promise Chaining" peut être déconcertante pour ceux qui se familiarisent pour la première fois avec la programmation JavaScript. Pourtant, sa maîtrise ouvre la voie à un moyen efficace de gérer des opérations asynchrones complexes dans ton code. Qu'est-ce que la chaîne de promesses et comment la mettre en œuvre ?Qu'est-ce qu'une chaîne de promesses en JavaScript ?
En JavaScript, le chaînage de promesses, également connu sous le nom de séquençage de promesses, est une technique qui permet de relier plusieurs promesses et de les traiter de manière séquentielle. Il s'agit d'invoquer plusieurs promesses qui se résolvent ou se rejettent l'une après l'autre. Cette technique est avantageuse lorsqu'il s'agit de coder des situations comportant des actions asynchrones dépendantes, où une action ne peut pas commencer tant que l'action précédente n'est pas terminée. Chaque opération enchaînée ne s'initie qu'une fois que l'opération précédente est résolue. Si une opération de la chaîne est rejetée, la chaîne s'arrête à ce point et tous les gestionnaires .then() suivants sont ignorés. Tu peux enchaîner des promesses à l'aide de la méthode .then(). Voici la partie intéressante : chaque méthode .then( ) renvoie elle-même une promesse. Cela signifie que tu peux y attacher une autre méthode .then( ), ce qui te permet de traiter les promesses dans l'ordre.Renvoyer une promesse à partir de la méthode .then(), c'est créer une "chaîne de promesses".
Enchaîner plusieurs promesses Javascript : Guide étape par étape
Pour illustrer le concept, imagine que tu lises des livres de façon séquentielle à partir d'une bibliothèque numérique. Tu ne commenceras pas le deuxième livre avant d'avoir terminé le premier, et ainsi de suite. En termes de programmation, commencer à lire le deuxième livre peut se produire dans la clause .then() de la fin du premier livre. Voici comment tu peux créer une séquence de promesses avec JavaScript :// Notre hypothétique fonction asynchrone pour simuler la lecture d'un livre. function readBook(bookName) { return new Promise(function(resolve, reject) { setTimeout(function() { resolve(`Finished reading ${bookName}`) ; }, Math.floor(Math.random() * 5000) + 1000) ; // La lecture dure de 1 à 5 secondes }) ; } // Maintenant, nous enchaînons le processus de lecture readBook('Book 1') .then(message => { console.log(message) ; return readBook('Book 2') ; }) .then(message => { console.log(message) ; return readBook('Book 3') ; }) .then(message => { console.log(message) ; }) .catch(error => { console.log(`Error occurred : ${error}`) ;}
) ;Tout d'abord, nous définissons une fonction readBook qui renvoie une nouvelle promesse. La promesse sera résolue avec un message indiquant que la lecture est terminée après un nombre aléatoire de secondes. Ensuite, nous invoquons readBook('Livre 1'). Cela lance un processus asynchrone : la lecture du premier livre. Une fois la lecture terminée, il renvoie une promesse qui se résout avec un message. Nous utilisons .then() pour enregistrer le message, puis renvoyer la promesse qui résulte de readBook('Book 2'), en forgeant le lien dans la chaîne de promesses. Par conséquent, readBook('Book 2') ne démarrera pas tant que readBook('Book 1') ne sera pas terminé et que la promesse qu'il renvoie n'aura pas été résolue. Nous poursuivons ce modèle pour le 'Livre 3'. Si l'un des processus de la chaîne commet une erreur ou rejette sa promesse, l'exécution passe au gestionnaire .catch, en enregistrant le message d'erreur. Si, toutefois, chaque livre est lu sans aucune erreur, le message final du 'Livre 3' sera enregistré. Dans l'ensemble, la compréhension des nuances et de la puissance de l'enchaînement des promesses en JavaScript peut grandement aider à gérer les tâches asynchrones dépendantes les unes des autres dans ton code, améliorant ainsi la lisibilité et la gestion globales.
Plongée en profondeur dans la promesse d'attente JavaScript
Dans la quête de la maîtrise des promesses JavaScript, le mot-clé "await" change la donne et mérite d'être étudié. En tant qu'extension des promesses, 'await' aide à organiser le code asynchrone de manière à ce qu'il ressemble à du code synchrone direct, ce qui favorise la lisibilité et la maintenabilité.Comment 'Await' affecte-t-il les promesses en Javascript ?
Le mot-clé `await` en JavaScript est utilisé en conjonction avec les promesses. Il met en pause l'exécution des fonctions `async` et attend la résolution ou le rejet de la promesse. C'est un ajout révolutionnaire qui rend la programmation asynchrone basée sur les promesses plus facile et plus intuitive. Cependant, il est essentiel de noter que "await" ne peut être utilisé qu'à l'intérieur d'une fonction `async`. Une fonction `async` en JavaScript est une fonction dans laquelle des opérations asynchrones peuvent être exécutées. Elles renvoient des promesses par défaut, quelle que soit la valeur de retour à l'intérieur du corps de la fonction. Toute tentative d'utilisation de 'await' en dehors d'une fonction asynchrone entraînera une erreur de syntaxe.Le mot-clé `await` en JavaScript permet de lire les informations d'une promesse sans utiliser les rappels '.then' ou '.catch'. Au lieu de cela, 'await' met en pause l'exécution du code jusqu'à ce que la Promesse soit résolue, ce qui permet d'obtenir un flux de contrôle plus direct.
- 'await' met l'exécution de la fonction asynchrone en pause et attend la résolution de la Promesse.
- 'await' ne peut être utilisé qu'à l'intérieur d'une fonction asynchrone.
- Si la promesse se réalise, le mot-clé 'await' récupère la valeur résolue.
- Si la promesse est rejetée, elle génère une erreur qui peut être rattrapée à l'aide de 'catch'.
Utilisation de 'Await' en Javascript Promise : un exemple
Faisons un tour pratique de l'utilisation de 'await' à l'aide d'un scénario simple. Tu es sur un site web qui cherche des chaussures, mais chaque demande pour trouver une chaussure par son ID est asynchrone. La fonction 'getShoeByID()' renvoie une promesse, soit en résolvant les données de la chaussure après une certaine durée, soit en rejetant avec un message d'erreur si l'identifiant demandé n'est pas trouvé. Maintenant, tu as une liste d'identifiants de chaussures et tu veux les récupérer dans l'ordre sans faire de demandes simultanées. C'est là que la fonction "await" est très utile.async function fetchShoesInOrder(ids) { for (let id of ids) { try { const shoe = await getShoeByID(id) ; // Se met en pause jusqu'à ce que la promesse se réalise console.log(`Fetched shoe with ID ${id} : ${shoe}`) ; } catch(error) { console.log(`Error : Could not fetch the shoe with ID ${id} : ${error}`) ;} } } }. Ici, nous utilisons une boucle pour parcourir le tableau d'identifiants de chaussures (`ids`). Pour chaque ID, nous envoyons une requête asynchrone pour récupérer la chaussure correspondant à cet ID en appelant `getShoeByID(id)`.
Normalement, la fonction `getShoeByID()` renvoie une promesse. Mais comme nous utilisons 'await', l'exécution de `fetchShoesInOrder()` se met en pause jusqu'à ce que la Promesse s'établisse. Nous enregistrons ensuite les données relatives aux chaussures ou les erreurs rencontrées.
Javascript Promises - Principaux enseignements
- Javascript Promises : outil pour gérer la programmation asynchrone en JavaScript, offrant une solution élégante et robuste pour traiter les opérations qui prennent du temps.
- Méthodes de promesses en Javascript : Méthodes intégrées comprenant ".then()", ".catch()", ".finally()", "Promise.all(iterable)", "Promise.race(iterable)" pour simplifier le traitement des opérations asynchrones.
- Chaînage dans les promesses Javascript : Permet aux promesses Javascript de s'enchaîner et de les traiter de manière séquentielle, l'opération enchaînée ne s'initie qu'une fois que l'opération précédente est résolue, ce qui constitue un excellent outil pour l'exécution séquentielle des tâches.
- Javascript Await Promise : Le mot-clé 'await', ainsi que les fonctions asynchrones, sont utilisés en conjonction avec les promesses. Il met en pause l'exécution des fonctions `async` et attend la résolution ou le rejet de la promesse, ce qui rend la programmation asynchrone basée sur la promesse plus facile et plus intuitive.
- Programmation asynchrone avec Javascript Promises : Pour gérer plus efficacement les opérations qui prennent du temps, comme la récupération de données sur un serveur ou la lecture d'un fichier, même lorsque l'ordre d'exécution n'est pas connu à l'avance.
Apprends plus vite avec les 15 fiches sur Promesses Javascript
Inscris-toi gratuitement pour accéder à toutes nos fiches.
Questions fréquemment posées en Promesses Javascript
À propos de StudySmarter
StudySmarter est une entreprise de technologie éducative mondialement reconnue, offrant une plateforme d'apprentissage holistique conçue pour les étudiants de tous âges et de tous niveaux éducatifs. Notre plateforme fournit un soutien à l'apprentissage pour une large gamme de sujets, y compris les STEM, les sciences sociales et les langues, et aide également les étudiants à réussir divers tests et examens dans le monde entier, tels que le GCSE, le A Level, le SAT, l'ACT, l'Abitur, et plus encore. Nous proposons une bibliothèque étendue de matériels d'apprentissage, y compris des flashcards interactives, des solutions de manuels scolaires complètes et des explications détaillées. La technologie de pointe et les outils que nous fournissons aident les étudiants à créer leurs propres matériels d'apprentissage. Le contenu de StudySmarter est non seulement vérifié par des experts, mais également régulièrement mis à jour pour garantir l'exactitude et la pertinence.
En savoir plus