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

NodeJS Discussion :

Portée des réponses


Sujet :

NodeJS

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Portée des réponses
    Bonjour Tout le Monde,

    je suis novice en Javascript, et j'avoue que j'ai du mal à comprendre ce que je fais...

    Alors, J'essaie d'utiliser la librairie snmp-native de NodeJS de la sorte :

    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
     
     
      var switchObj = { hostname: switchName, ports : [] };
     
      let session = new snmp.Session ({ host: switchName, community: "public" });
     
      session.get({ oid: oidNumberOfPorts }, function (error, varbinds) {
        if (error) {
          console.log("Fail to get Number of Ports available on " + switchName + " :(' ");
          return null;
        } else {
          switchObj.portsNumber =  varbinds[0].value ;
          for ( let i = 1; i <= switchObj.portsNumber + 1 ; i++) {
            switchObj.ports.push([]);
           }; 
        }
        console.dir(switchObj)
      });
    console.dir(switchObj)
    Pourquoi le premier console.dir() me renvoit bien mon objet avec .ports initialisé avec autant de tableau que varbinds[0].value retourne,
    Tandis que le second me renvoit { hostname: switchName, ports : [] };

    Qu'ais-je mal compris aux portée de Javascript ?
    Est-ce normal ? et pourquoi ?

    Merci,
    Jeremy.

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    On n'a pas tout pour pouvoir tester mais je pense que c'est un problème lié à l’asynchrone comme dans ce fil : https://www.developpez.net/forums/d1...etour-fonction...

    C'est-à-dire que lors de l’exécution du deuxième console la fonction de rappel (celle que tu as passée en paramètre de la fonction session.get) n'a pas encore été exécutée et par conséquent l'objet switchObj n'a pas encore été modifié...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par mereej974 Voir le message
    ...Je suis novice en Javascript,... , et j'ai du mal à comprendre ce que je fais...

    Alors, J'essaie... NodeJS....
    Ce ne serait pas comme dire :

    "...Je n'ai jamais conduit de voiture,... et je ne connais pas le Code de la Route...

    Alors, J'essaie... une Formule 1..."
    Balèze......

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour et Merci de vos réponse !

    @jreaux62 : on peux le voir comme ça :-)

    @Beginner. : C'est vrais que ça y ressemble fortement.

    si je log un peux plus j'ai :
    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
     
    Apres le session.get :
    { hostname: 'swgen1', ports: [] }
    { hostname: 'swgen1', ports: [] }
     
    GET /switchs 304 58.505 ms - -
    Pendant le session.get, juste apres la boucle :
    {
      hostname: 'swgen1',
      ports: [
        [], [], [], [], [], [], [], [], [], [], [], [],
        [], [], [], [], [], [], [], [], [], [], [], [],
        [], [], [], [], [], [], [], [], [], [], [], [],
        [], [], [], [], [], [], [], [], [], [], [], [],
        [], [], [], [], [], [], [], [], [], [], [], [],
        [], []
      ],
      portsNumber: 61
    }
    Donc j'imagine que ma fonction session.get est asynchrone. Mais comment "attendre" ma donnée après session.get ? Oo

    Jeremy.

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Citation Envoyé par mereej974 Voir le message
    Donc j'imagine que ma fonction session.get est asynchrone. Mais comment "attendre" ma donnée après session.get ? Oo
    Dans le callback comme tu le fais dans ton code
    https://github.com/calmh/node-snmp-n...tions-callback
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  6. #6
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par mereej974 Voir le message
    Donc j'imagine que ma fonction session.get est asynchrone. Mais comment "attendre" ma donnée après session.get ?
    Comme l'a dit fredoche : en utilisant le callback (ce que j'ai traduit par "fonction de rappel" dans mon message précédent)...

    Et c'est ce que tu as déjà fait d'ailleurs, comme tu l'as remarqué toi-même, le premier console (contrairement au second) te donne bien le résultat eh bien c'est parce qu'il est dans la fonction de rappel, le résultat se trouve dans le paramètre varbinds de la fonction de rappel sauf si bien sûr il y a une erreur...

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  2. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  3. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  4. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  5. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05

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