2011-06-18 7 views
1

node.jsの非同期性を巡って私の頭を悩ましています。私は 'ls'コマンドを実行し、結果を(文字列として)ブラウザに返すルートを望んでいたとします。どのようにchild_process.execを使用してこれについて行くだろうか?以下は間違っているが、私はに苦しんだ何の線に沿って:node.jsの結果を取得していますchild_process

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"の出力として変わります。

答えて

11
あなたdir_listへ

パスコールバックと応答のための

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}); 
    }); 
}); 
+0

感謝を結果-la LSでそれを呼び出します。この例は、私が達成する必要があったものを正確に実行しました。 – ngmaloney

関連する問題