index.js:
var sys = require('sys'),
exec = require('child_process').exec;
...
var result;
child = exec('phantomjs ./phantom/folder/search.js',
function(error, stdout, stderr) {
result = stdout;
console.log(result);
}
);
stdout
пустой, в файле search.js
есть переменная которую я хочу в stdout
передать. не могу разобраться как это сделать?
UPD:
var result;
child = exec('phantomjs ./phantom/iaai/search.js',
function(error, stdout, stderr) {
result = stdout;
console.log(result) // корректный ответ содержащий stdout
}
);
console.log(result); // undefined
По какой-то причине stdout
не записывается в result. Как получить доступ к этим данным за пределами function(error, stdout, stderr) {}
?
Функция function(error, stdout, stderr) принимает в параметре stdout то, что помещает в stdout выполняемый ей процесс. Поэтому требуется в search.js что-нибудь вывести в stdout. Например при помощи console.log('что-то')
exec - это асинхронная функция, она возвращает результат сразу же. И сразу после этого вы вызываете console.log(result);
При этом, конечно же, result неопределен, потому что при объявлении вы его не инициализировали, а function(error, stdout, stderr)
внутри exec еще не выполнилась, она выполнится асинхронно, после завершения запущенного процесса.
Для того, чтобы "все работало" вам надо делать свой код так же асинхронным или использовать синхронный запуск процесса
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть форма с дата-атрибутом "callback", он содержит название функции, которая должна запуститься после отработки AJAX
Как вывести переменную fullName ? Почему этот код не работает и не выводится "Bob Ross"?