Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récuperer le retour d'un callback

    14 novembre 2019 à 13:33:10

    Je travaille sur la bibliothèque de routeurs os-routeurs Mikrotik. Je ne parviens pas à afficher un appel à l'API en dehors du callback. La variable toto doit contenir l'objet récupéré dans l'API uniquement. Je ne peux pas résoudre le problème d'asynchronisation.

    var MikroNode = require('mikronode-ng2');
    
    const USER = "user";
    const PASSWD = "password"
    
    var connection = MikroNode.getConnection('10.0.0.1', USER, PASSWD)
    var result;
    
    function test() {
        connection.getConnectPromise().then( function (conn) {
            conn.getCommandPromise('/ip/address/print').then(async function resolved(values) {
                // console.log('Addreses: ' + JSON.stringify(values));
                result = 'Addreses: ' + JSON.stringify(values)
                return await result;
            })
        })
    }
    
    console.log(test())
    Le retour en terminal est undefined

    -
    Edité par InscriptionSite 14 novembre 2019 à 13:34:29

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2019 à 23:15:41

      Bonjour,

      Je n'ai pas compris ce que tu cherchais à faire.

      De quelle variable toto parles tu?

      • Partager sur Facebook
      • Partager sur Twitter
      "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
        15 novembre 2019 à 8:36:32

        Salut,

        C'est normal que le retour soit undefined surtout que je pense qu'il faut que tu revoie un peu comment marche l'asynchrone et la syntaxe de async et await.

        Voici comment je verrais le code de mon côté :

        const MikroNode = require('mikronode-ng2')
        
        const USER = 'user'
        const PASS = 'password'
        
        const connectionManager = MikroNode.getConnection('10.0.0.1', USER, PASS)
        
        async function test() {
          const connection = await connectionManager.getConnectPromise()
          const values = await connection.getCommandPromise('/ip/address/print')
          
          return 'Addresses: ' + JSON.stringify(values)
        }
        
        test().then((result) => {
          console.log(result)
        })


        Bon ne connaissant pas la lib utilisé, je ne peux que supposer mais c'est pour avoir le principe.

        • Partager sur Facebook
        • Partager sur Twitter

        Récuperer le retour d'un callback

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown