执行文件:test.js
var exec = require('./exec');
var x = exec.getData('http://www.google.com.hk');
console.log('获取的返回值: ' + x);
模块:exec.js
var str = '1';
exports.getData = function(pstr) {
var exec = require('child_process').exec,
last = exec('exec.php ' + pstr);
last.stdout.on('data', function(data) {
console.log('标准输出:' + data);
console.log('in:' + str);
str = data;
console.log('inlast:' + str);
});
console.log('return:' + str);
return str;
}
执行结果:
return:1
获取的返回值: 1
标准输出:6543239631626496764
in:1
inlast:6543239631626496764
想解决问题:
怎样取得 str 变量经过 last.stdout.on 赋值后的返回值,希望执行文件test.js的输出是:获取的返回值:6543239631626496764
8 回复
@amoa400 我明白是last.stdout.on是异步返回的,看打印结果就可以看出,就是不知道应该如何进行处理才能正常返回,曾想用 async 包来解决,但是不知道应该怎么进行包装,可能对 async 还不够了解。