我正在尝试为给定的主机名动态添加IP地址。
代码段
// 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
上面的代码只是获取给定主机名的IP地址并将其分配给变量“hostIP”,问题是当我在循环外显示或在选项中使用时,我在hostIP中获得空值。
输出 -
Outside : null // Log 2
{ hostname: null, // Log 3
port: '8080',
path: null,
method: 'POST',
}
Inside : 192.168.253.18 // Log 1
根据我的需要,代码应该按顺序执行,首先查找函数应该为hostIP赋值然后再执行。
任何帮助表示赞赏!!
答案 0 :(得分:1)
正如你所说node.js是异步的,你需要做如下:
// 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
});
答案 1 :(得分:0)
参考下面的答案和一些修改,我得到了我的结果.. 这是最后的代码片段......
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:有没有更好的方法来解决这个问题,而不是 将我的整个代码放在查找方法中可以解决这个问题 顺序?
像第一次运行查找方法然后初始化我的 请求。
任何帮助表示赞赏!!
由于