问题描述
|
我无法绕过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});
});
});