我是 Node 的新手并且在它的一些非阻塞元素上绊倒了。我正在尝试创建一个对象并将其元素之一作为返回 child_process.exec 标准输出的函数,如下所示:
var exec = require('child_process').exec;
var myObj = {};
myObj.list = function(){
var result;
exec("ls -al", function (error, stdout, stderr) {
result = stdout;
});
return result;
}
console.log('Ta da : '+myObj.list);
我认为 myObj.list
在被设置为 stdout
之前返回了 result
,但我不知道如何制作它等待或为它做一个回调。感谢您的帮助!
最佳答案
您不能直接返回该值,因为它暂时不可用。因此,您需要使用回调而不是返回值,这意味着将调用代码稍微翻转一下。
var exec = require('child_process').exec;
var myObj = {};
myObj.list = function(callback){
var result;
exec("ls -al", function (error, stdout, stderr) {
callback(stdout);
});
// No return at all!
}
// Instead of taking a return we pass a callback
// which receives the value and carries on our computation.
myObj.list(function (stdout) {
console.log('Ta da : '+ stdout);
});
在实际代码中,您可能希望回调将错误作为第一个参数,您不必这样做,但这是在 Node.JS 中完成事情的正常方式。
关于Node.js:对象值作为 child_process.exec 的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270857/