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 еще не выполнилась, она выполнится асинхронно, после завершения запущенного процесса.
Для того, чтобы "все работало" вам надо делать свой код так же асинхронным или использовать синхронный запуск процесса
Есть форма с дата-атрибутом "callback", он содержит название функции, которая должна запуститься после отработки AJAX
Как вывести переменную fullName ? Почему этот код не работает и не выводится "Bob Ross"?