Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script Verständnisproblem

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script Verständnisproblem

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      stoffel67 last edited by

      Hallo, steh irgendwie auf Kriegsfuss mit JavaScript… :?

      folgendes script:

      const dns = require('dns');

      function getHostip(host) {

      dns.lookup(host, function(err, result,family) {

      console.log(result);

      return result;

      });

      }

      var h=getHostip('fritz.box');

      console.log('IP:'+h);

      warum bekomme ich diesen Output: IP:undefined

      innerhalb der function wird die richtige IP ausgegeben

      1 Reply Last reply Reply Quote 0
      • T
        tempestas last edited by

        Als Laie ist meine Meinung:

        fritz.box ist nirgends deklariert. Damit weiß das Script nicht, was du in diesem Bereich

        var h=getHostip('fritz.box');
        

        von ihm willst

        P.S.: bitte Code Tags nutzen

        1 Reply Last reply Reply Quote 0
        • arteck
          arteck Developer Most Active last edited by

          @tempestas:

          Als Laie ist meine Meinung:

          fritz.box ist nirgends deklariert. Damit weiß das Script nicht, was du in diesem Bereich

          var h=getHostip('fritz.box');
          

          von ihm willst

          P.S.: bitte Code Tags nutzen `

          das ist doch ein string der da übergeben wird…````
          'fritz.box'

          
          

          const dns = require('dns');

          function getHostip(host) {
          	var res = dns.lookup(host, function(err, result,family) {
          		console.log(result);
          		return result;
          	});
          	return res;
          }
          

          var h=getHostip('fritz.box');
          console.log('IP:'+h);

          1 Reply Last reply Reply Quote 0
          • S
            stoffel67 last edited by

            "Fritz.box" ist ein string der an die````
            function getHostip(host)

            
            in der function getHostIP wird ja die richtige IP Adresse ausgegeben````
             console.log(result);
            

            d.h. der string wird an die function übergeben, mir ist nur nicht klar wie die function etwas zuückgegebn kann.

            1 Reply Last reply Reply Quote 0
            • BuZZy
              BuZZy last edited by

              @tempestas:

              fritz.box ist nirgends deklariert. Damit weiß das Script nicht, was du in diesem Bereich

              var h=getHostip('fritz.box');
              

              von ihm willst ` Hallo,

              die Funktion````
              function getHostip(host) {
              dns.lookup(host, function(err, result,family) {
              console.log(result);
              return result;
              });
              }

              getHostip(host) verarbeitet 'fritz.box' als Parameter.
              
              ..function functionsName(parameter) …
              
              Wenn du dann functionsName('Toller Test!'); aufrufst, kannst du innerhalb der Funktion mit der Variable parameter arbeiten der du beim Aufruf der Funktion den Wert 'Toller Test!' mitgegeben hast..
              
              z.B.:````
              function testFunktion(parameter) {
              log(parameter);
              }
              
              testFunktion('Toller Test!');
              ````Ergibt die Logausgabe: 'Toller Test!' ;)
              
              Gruß
              1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 last edited by

                Das Problem ist der callback … der kann kein "return" für die Funktion oben drüber machen.

                Der Weg das in Javascript zu lösen sind eigene Callback-Funktionen:

                const dns = require('dns');
                function getHostip(host, callback) {
                    dns.lookup(host, function(err, result,family) {
                        console.log(result);
                        callback(result);
                    });
                }
                
                getHostip('fritz.box', function(result) {
                    console.log('IP:'+result);
                });
                
                

                (Blind geschrieben, aber sollte so tun)

                1 Reply Last reply Reply Quote 0
                • S
                  stoffel67 last edited by

                  Ja, so tut's…

                  ich hab einfach diese callback Logik noch nicht durchschaut, verinnerlicht.... 😢

                  wenn ich nun das Ergebnis wieder in einer andern Funktion verwenden will, muß doch mal irgendwann etwas "zurückgebbar" sein... :roll:

                  1 Reply Last reply Reply Quote 0
                  • apollon77
                    apollon77 last edited by

                    @stoffel67:

                    Ja, so tut's…

                    ich hab einfach diese callback Logik noch nicht durchschaut, verinnerlicht.... 😢

                    wenn ich nun das Ergebnis wieder in einer andern Funktion verwenden will, muß doch mal irgendwann etwas "zurückgebbar" sein... :roll: `

                    Ja den knoten muss man einmal lösen 🙂

                    ne das bekommst Du ausser über tricks oder so nicht mehr wirklich zurück. Üblicherweise schreibst Du deinen weiteren Code in diese Callbackfunktion wo jetzt das console.log('IP:'+result); steht. So wird alles "flow-technisch" so ausgeführt wie Du es willst.

                    Das ist aber ok so.

                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      Ne Alternative wären promises und optional async/await in TypeScript. Damit kannst du diese callback Logik so umbauen, dass es von außen so aussieht wie ein ganz normaler funktionsaufruf mit Rückgabewert. Ist aber für Anfänger noch schwieriger, das initial zu verstehen. Danach ist der asynchrone Programmablauf imo deutlich einfacher zu verstehen.

                      Gesendet von unterwegs

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      509
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      6
                      9
                      663
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo