我无法绕过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”的输出。
答案 0 :(得分:11)
将回调传递给你的dir_list并用ls -la result
调用它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});
});
});