Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сохранить в переменной (https://javascript.ru/forum/misc/52259-kak-sokhranit-v-peremennojj.html)

bscripter 10.12.2014 15:11

Как сохранить в переменной
 
Создал и сохранит файл ip.js:
var net = require('net');

function getNetworkIP(callback) {
  var socket = net.createConnection(80, 'www.google.com');
  socket.on('connect', function() {
    callback(undefined, socket.address().address);
    socket.end();
  });
  socket.on('error', function(e) {
    callback(e, 'error');
  });
}


В другом скрипте:
var addr;
ip.getNetworkIP(function (error, addr) {
    console.log('inner: ' + addr);
    if (error) {
        callback(e, 'error');
    }
});
console.log('ip: ' + addr);


Вывод:
Код:

ip: undefined
inner: 192.168.21.94

Правильно ли я понимаю, что из функции выходит раньше, чем ip определен, и как сохранить полученный ip во внешнем скрипте, заранее благодарен.

jsnb 10.12.2014 15:24

Добро пожаловать в чудный мир асинхронности. Для этого и передается функция-калбек в ip.getNetworkIP чтобы вызываться, когда адрес будет получен. Вот в ней и пиши код который переадст этот адрес куда-нибудь или что-то с ним сделает.

bscripter 10.12.2014 15:32

Спасибо. Буду учиться далее. Не облегчите ли путь, дав пример использования такового коллбека?

jsnb 10.12.2014 15:44

Цитата:

Сообщение от bscripter
Не облегчите ли путь, дав пример использования такового коллбека?

Так у тебя в коде и так он используется. В той функции, которая в аргументах получает error и addr пиши код, который делает то что тебе надо с этим addr.

bscripter 10.12.2014 15:56

Спасибо, кажется, начинаю постигать сей чудный мир. Как бы вместо восхождения к высотам разума не получилось восползание :)


Часовой пояс GMT +3, время: 04:38.