2011-06-18 62 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與LS稱之爲香格里拉大導致

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

感謝您的答覆。這個例子正是我需要完成的。 – ngmaloney