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 :

classe javascript - fetch et constructeur


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut classe javascript - fetch et constructeur
    Bonjour,

    Je définis une classe javascript, et dans le constructeur, j'ai une variable où je veux stocker le résultat d'un fetch.
    Ca devrait ressembler à ç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
    class MaClass {
     
      constructor(url) {
        this.url = url;
        this.capabilities = fetch(this.url)
        .then(response => response.text())
        .then(data => {
                  console.log(data)
                  return dd
        });
        console.log(this.capabilities);
      }
     
      methode1() {
        console.log(this.capabilities);
      }
     
    }
    Avec le console.log qui est dans le then, j'ai bien ce que je veux, le console.log qui est à la fin du constructeur me renvoie la Promise (Promise { <state>: "pending" }) et non le résultat de la Promise

    Comment affecter le résultat de la Promise à une variable du constructeur, pour pouvoir l'utiliser ensuite dans les différentes méthodes de la classe ?


    Merci,
    Nico

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 310
    Par défaut
    Bonjour,
    Première chose qui va pas Fetch c'est une fonction asyncrhone donc tant que tu met pas de async await c'est normal que ca te retourne la promise
    Mais sinon le code corrigé :
    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
    class MaClass {
      constructor(url) {
        this.url = url;
        this.capabilities = fetch(this.url)
          .then(response => response.text())
          .then(data => {
            console.log(data);
            return data;
          });
      }
     
       async methode1() {
        // Wait for the capabilities to resolve
        const resolvedCapabilities = await this.capabilities;
        console.log(resolvedCapabilities);
      }
    }
     
     
    var test= new MaClass("http://localhost")
    test.methode1()
    Cdt

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut
    Donc si je comprend le code, à chaque fois que j'appelle méthode1, il relance le fetch, et donc il refait une requête sur le serveur distant.

    Nico

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 310
    Par défaut
    Tu vois un fetch dans la méthode1 ?
    C'est juste un getter actuellement

    Si tu en voulais un rajoute le ... J'ai peut être pas compris le truc

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut
    là je suis un peu perdu, désolé, mais je débute dans les async/ await ...
    t'aurais pas un petit exemple complet?

    Pour ce qui est de la methode1() que j'ai mis dans mon code, c'était pour l'exemple, mais au final, il y aura dans ma classe des méthodes plus complexes que de récupérer la valeur d'une variable de la classe...

    Nico

Discussions similaires

  1. classe javascript et ie sur onclick
    Par The_Pretender dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/10/2007, 23h04
  2. [POO] Classe et surchage de constructeur
    Par LeXo dans le forum Langage
    Réponses: 3
    Dernier message: 09/07/2007, 18h09
  3. Classe imbriquée et son constructeur
    Par toninlg dans le forum C++
    Réponses: 7
    Dernier message: 30/09/2006, 06h21
  4. [AJAX] Soap Ajax classe javascript
    Par sekaijin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2006, 08h50
  5. Réponses: 13
    Dernier message: 02/02/2005, 00h21

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