2016-04-18 13 views
0

Ich versuche, IP-Adresse für einen bestimmten Host-Namen dynamisch hinzuzufügen.So stoppen Sie die asynchrone Ausführung in node.js

Code-Schnipsel

// This function will return me ip address of my server 
dns.lookup('testwsserver', function (err, result { 
    hostIP = result; 
    console.log("Inside : "+hostIP); // Log 1 
}); 

console.log("Outside : "+hostIP); // Log 2 

var options = { 
    host : hostIP, 
    port : '8080', 
    path : null, 
    method : 'POST', 
}; 

console.log(options); // Log 3 

Above Code einfach für bestimmte Hostnamen IP-Adresse abruft und es Variable „HostIP“ Zuweisen Problem ist, dass ich null-Wert in HostIP bin immer, wenn sie außerhalb der Schleife anzeigt oder mit in Optionen.

Ausgang -

Outside : null       // Log 2 

{ hostname: null,      // Log 3 
    port: '8080', 
    path: null, 
    method: 'POST', 
    } 

Inside : 192.168.253.18    // Log 1 

Nach meinem Bedürfnis, sollte der Code in Ordnung, erste Lookup-Funktion ausgeführt werden soll Wert auf HostIP zuweisen und dann Rest Ausführung.

Jede Hilfe wird geschätzt !!

+0

Diese Sie könnte helfen https://github.com/ForbesLindesay/sync-request –

+0

Dank @DipakDendage, aber ich habe keine Berechtigung, keine neuen PKG zu installieren. – abhi9393

Antwort

1

Wie Sie gesagt node.js ist async Sie zu tun haben, wie folgt:

// This function will return me ip address of my server 
dns.lookup('testwsserver', function (err, result { 
    hostIP = result; 
    console.log("Inside : "+hostIP); // Log 1 

    console.log("Inside1 : "+hostIP); // Log 2 

    var options = { 
    host : hostIP, 
    port : '8080', 
    path : null, 
    method : 'POST', 
    }; 

    console.log(options); // Log 3 

});

+0

Also muss ich meine Anfrage Details innerhalb der Suche zu deklarieren .. Dann, wie ich es global verwenden werde? – abhi9393

0

Mit Bezug auf die unten Antwort und einige Modifikationen, bekam ich mein Ergebnis .. ist hier schließlich Code-Schnipsel ...

dns.lookup('soawsserver', function (err, result) { 
     hostIP = result; 

// Only exception handling, in case dns look up fails to find server 
     if(hostIP == null) { 
      console.log("\nUnable to detect server, pl check /etc/hosts file.\n") 
     } 

     else { 
      var options = { 
       host : hostIP, 
       port : '8080', 
       path : null, 
       method : 'POST', 
      }; 
     }; 

PS: Gibt es einen besseren Weg, um dieses Problem zu lösen, wie anstelle von setze ich meinen ganzen Code in eine Nachschlage-Methode kann ich dieses Problem der Reihe nach lösen?

Wie erste laufende Nachschlagen Methode dann meine Anfrage initialisieren.

Jede Hilfe wird geschätzt !!

Dank