Сохранить результаты proc.stdout.on ()? - PullRequest
1 голос
/ 11 апреля 2011

Я очень новичок в JavaScript в целом, особенно на стороне сервера.Я использую node.js и имею следующий код:

var results = modulex.commandy(args)

Где модуль выглядит так:

export.commandy = function(args) {
  var output;
  var pingproc = spawn('ping', ['-c 1', 'host.com']);
  pingproc.stdout.on('data', function (data) {
    output += data;
  });

  return output;
}

Если я хочу, чтобы функция commandy возвращала результаты стандартного выводаиз процесса, как мне это сделать?Не завершится ли функция commandy до вызова обратного вызова для stdout?В приведенном выше коде output всегда не определено .

Спасибо за помощь!

1 Ответ

2 голосов
/ 11 апреля 2011

Проблема в том, что вы возвращаете результаты до запуска события. Функция вернется сразу же, но событие не сработало для pingproc.stdout.on('data'); Вам необходимо использовать обратный вызов. Что-то вроде:

modulex.commandy(function(output) { /*whatever you need w/ the output here */ });

, а затем

export.commandy = function(args, callback) {
  var output;
  var pingproc = spawn('ping', ['-c 1', 'host.com']);
  pingproc.stdout.on('data', function (data) {
    callback(data);
  });
}

Это вызовет функцию, которую вы передаете в function(output) {} каждый раз при получении данных. Кроме того, вы можете вызвать обратный вызов после получения определенного объема данных или после вызова конечного события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...