如何在node.js中停止异步执行

时间:2016-04-18 11:18:36

标签: javascript node.js asynchronous ip hostname

我正在尝试为给定的主机名动态添加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赋值然后再执行。

任何帮助表示赞赏!!

2 个答案:

答案 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:有没有更好的方法来解决这个问题,而不是   将我的整个代码放在查找方法中可以解决这个问题   顺序?

     

像第一次运行查找方法然后初始化我的   请求。

     

任何帮助表示赞赏!!

     

由于