IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Mettre la valeur de PromiseResult dans une variable


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut Mettre la valeur de PromiseResult dans une variable
    Bonjour,
    Je cherche mon erreur qui fait que je n'arrive pas à attribuer la valeur de [[PromiseResult]] à une variable ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    async function getRaceId(nameRace) {
        var response = await fetch('http://zezo.org/races2.json');
        var datas = await response.json();
        //console.log(datas);
        for (var i = 0; i < datas.races.length; i++) {
            if (datas.races[i].name === nameRace) {
              return datas.races[i].id;
            } else {}
        }
    }
     
    var raceId = getRaceId("TJV ULTIM");
    console.log(raceId);
    getRaceId() me retourne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Promise*{<pending>}[[Prototype]]: Promise[[PromiseState]]: "fulfilled"[[PromiseResult]]: "490.1"
    je vois et je sais que "490.1" est bien la valeur que je souhaite obtenir donc jusqu'a preuve du contraire ça c'est ok (j'en doute maintenant ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var raceId = getRaceId("TJV ULTIM");
    console.log(raceId);                         // <- Retourne undefined
    Ou je me craque ? ça c'est la question que je me pose, un coup de pouce serait le bienvenu merci

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Bonjour,

    Ce n'est pas possible de récupérer la valeur d'une fonction asynchrone avec une méthode synchrone, il faudrait utiliser le callback then() comme c'est montré dans cet exemple.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    J'ai beau retourner le problème dans tous les sens, rien n'y fait ... j'arrive pas à "sortir" le 490.1

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    var raceId;
     
    function getRaceId(nameRace) {
        return fetch('http://zezo.org/races2.json', {
            method: 'GET',
        })
        .then(function(response) {
            return response.json();
        })
        .then(function(datas) {
            for (var i = 0; i < datas.races.length; i++) {
                if (datas.races[i].name === nameRace) {
                    raceId = datas.races[i].id;
                } else {}
            }
            console.log(raceId);
            return raceId;
        })
    }
     
    getRaceId("TJV ULTIM").then(raceId => {raceId;});
    J'ai undefined et le console.log(raceId) me retourne bien 490.1.
    C'est à s'arracher les cheveux ce truc ...

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Bonjour,

    Au lieu de stocker la valeur de la fonction getRaceId dans la variable raceId (qui n'est pas possible techniquement), essaies plutôt de mettre le traitement à l'intérieur de then comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function getRaceId(nameRace) {
        /* le return est inutile */
        fetch('http://zezo.org/races2.json', {
            method: 'GET',
        })
        .then(function(response) {
            return response.json();
        })
        .then(function(datas) {
            for (var i = 0; i < datas.races.length; i++) {
                if (datas.races[i].name === nameRace) {
                    console.log(datas.races[i].id);
                    /* c'est ici qu'il faut utiliser la valeur de datas.races[i].id et pas ailleurs !*/
                }
            }
     
            //return raceId; inutile de retourner ceci !
        })
    }
     
    //Puis tu fais appel à la fonction sans then, parce qu'il déjà géré par la fonction :
    getRaceId("TJV ULTIM");

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Ok mais je souhaite la récupérer et la stocker pour pouvoir la réutiliser donc je dois pas utiliser la bonne méthode alors ?

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Montre comment tu veux la réutiliser, probablement on aura une solution...

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/05/2010, 15h34
  2. récupérer valeur du javascript dans une variable php
    Par zoukman18 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2009, 17h11
  3. Réponses: 6
    Dernier message: 10/06/2008, 17h18
  4. Réponses: 9
    Dernier message: 27/05/2008, 13h44
  5. DOS - Récupérer la valeur de hostname dans une variable
    Par f1vincent dans le forum Développement
    Réponses: 2
    Dernier message: 18/10/2006, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo