2016-04-18 14 views
0

Я пытаюсь динамически добавлять IP-адрес для заданного имени хоста.Как остановить выполнение async в 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("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

Это может помочь вам https://github.com/ForbesLindesay/sync-request –

+0

Спасибо @DipakDendage, но у меня нет разрешения на установку каких-либо новых PKG. – abhi9393

ответ

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 

});

+0

Так что мне нужно объявить данные моего запроса в поиске .. Тогда как я буду использовать его во всем мире? – abhi9393

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: Есть ли лучший способ решить эту проблему, как вместо , помещая весь мой код в метод поиска, я могу решить эту проблему последовательно?

Как первый запуск искать метод, а затем инициализировать мой запрос .

Любая помощь приветствуется!

Благодаря

Смежные вопросы