我无法理解 Node.js 的异步特性。假设我想要一条执行“ls”命令并将结果(作为字符串)返回到浏览器的路由。如何使用 child_process.exec 来解决这个问题?以下是不正确的,但符合我正在努力解决的问题:
function dir_list() {
var sys = require('sys');
var exec = require('child_process').exec
child = exec('ls -la', function(error, stdout, stderr) {
//I would like to return stdout but can't figure out how
return stdout;
});
return child;
}
app.get('/', function(req, res){
res.render('index', {
title: 'MyPage',
subtitle: 'Below is a directory listing',
results: dir_list()
});
这不是我的 app.js 的完整代码,但本质上我正在寻求有关获取 dir_list() 的帮助,以将结果变量设置为“ls -la”的输出。
最佳答案
将回调传递给您的 dir_list 并使用 ls -la 结果调用它
function dir_list(cb) {
var sys = require('sys');
var exec = require('child_process').exec
child = exec('ls -la', function(error, stdout, stderr) {
//I would like to return stdout but can't figure out how
cb(stdout);
});
}
app.get('/', function(req, res){
dir_list(function(dir_list_output) {
res.render('index', {
title: 'MyPage',
subtitle: 'Below is a directory listing',
results: dir_list_output});
});
});
关于node.js - 检索node.js child_process的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394072/