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 émérite
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 1 848
    Points : 2 315
    Points
    2 315
    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
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 611
    Points : 31 891
    Points
    31 891
    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......
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  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 expert
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 1 430
    Points : 3 271
    Points
    3 271
    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

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 1 848
    Points : 2 315
    Points
    2 315
    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