检索node.js child_process的结果

我在绕过node.js的asynchronous本质时遇到了麻烦。 让我们假设我想要一个执行'ls'命令并将结果(作为string)返回给浏览器的路由。 如何使用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()将结果variables设置为“ls -la”的输出。

将callback传递给你的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}); }); });