Bonjour,
Je suis débutant en JS et je cherche à bien comprendre ce morceau de code.
Quelqu'un peut me donner des explications ?
Merci d'avance
![]()
Bonjour,
Je suis débutant en JS et je cherche à bien comprendre ce morceau de code.
Quelqu'un peut me donner des explications ?
Merci d'avance
![]()
Bonjour,
getInfos(val) est une fonction asynchrone qui retourne une promesse, et cette dernière retourne un objet javascript val {id:"valeur id",price:"Prix produit",name:"Nom produit"} en cas de succès (ne pas oublier le cas d'erreur qui doit être géré par catch() ou reject()) en passant par la fonction de rappel resolve().
Promise.all() est un outils de composition qui permet de mener des opérations asynchrones en parallèle.
Bonjour Toufik83
Merci pour tes explications.
Pourquoi dans le .then ci dessus, les données ne sont pas inversées en result.price = val.price car val.price provient je pense de la requête à l'API et on veut attribuer cette valeurs à result.price ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .then((result) => { val.price = result.price;
Si on récupère déjà les valeurs que l'on veut, (val.price = result.price et val.name = result.name), à quoi sert : return resolve(val); ?
La promise.all a-t-elle un lien avec la fonction getInfos et la promise de celle-ci ?
Merci d'avance pour les éclaircissements.
Non c'est le contraire, le résultat de la requête de l'API est retourné par la variable result, et val c'est un paramètre de type objet {id:"valeur de l'id"} de la fonction getInfos(), et donc lorsque vous appelez par exemple getInfos({id:1}) vous aurez le résultat suivant {id:1,price:"Prix ...",name:"Nom..."}Une promesse est soit résolue avec resolve(), soit rejetée avec reject(), dans votre cas si tout se passe bien, on résout la promesse pour qu'elle retourne l'objet val.
Oui, promise.all attend que toutes les promesses soient terminée (résolues ou rejetées), elle est souvent utilisée pour gérer plusieurs promesses, voir cet exemple pour mieux comprendre.
Merci beaucoup pour vos précisions.
Reste 2 zones d'ombres :
L'objet val va contenir val.price et val.name avec les données de ceux-ci ?
Pourquoi utiliser Promise.all alors que dans ce cas (A priori), il y a qu'une promise a attendre et pas plusieurs ?
Merci d'avance
Oui, avec les valeurs correctes.
Parce que la liste des produits Cart.products est un tableau contenant plusieurs produits, donc si tu as par exemple 3 produits avec les id (1,2,3) : [{id:1},{id:2},{id:3}], la fonction devient :
Chaque produit est géré par une promesse, donc dans ce cas il y'a 3 promesses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Promise.all([{id:1},{id:2},{id:3}].map(getInfos))
Un grand merci pour ces explications claires.
Bonne soirée
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager