2014-04-30 53 views
0

我想用這個簡單的函數返回用戶名,但是它不工作.I事情它的異步多數民衆贊成爲什麼它返回undefined。那麼從stdout返回價值的最佳方式是什麼?Nodejs:返回標準輸出

function User() { 
    exec('whoami',function (error, stdout, stderr) { 
      return stdout; 
     }); 
} 

有一個節點模塊execSync,但它不適用於生產機器。

回答

1

使用後,

var exec = require('child_process').exec; 

function User(cmd, callback) { 
    exec(cmd, function (error, stdout) { 
     return callback(null, stdout); 
    }); 
} 

User('whoami', function(err, callback){ 
    console.log(callback); 
}); 
1

您從異步回調中返回一個值,該值不起作用。你需要一個回調傳遞給User()代替:

function User(cb) { 
    exec('whoami',function (error, stdout, stderr) { 
    if (error) 
     return cb(error); 
    cb(null, stdout); 
    }); 
}