我試圖以字符串的形式返回此函數的輸出,但它以undefined的形式返回。我哪裏錯了?Node.js:寫一個函數返回spawn標準輸出爲字符串
function run(cmd){
var spawn = require('child_process').spawn;
var command = spawn(cmd);
var result = '';
command.stdout.on('data', function(data) {
result += data.toString();
});
command.on('close', function(code) {
return result;
});
}
console.log(run('ls'));
謝謝!我將如何改變它的功能輸出到一個變量,而不是console.log? – 2013-03-20 05:18:28
你應該做任何你必須做的與命令結果回調函數,只是用實際代碼替換console.log。一切都是異步的,所以即使你試圖把結果值放在一個全局變量中,你也不能分辨它什麼時候可用。如果你真的想以非異步的方式做一些事情,這可以幫助:https://github.com/caolan/async#series。但問問自己爲什麼你想這樣做。 – fuwaneko 2013-03-21 13:52:59
Waaaah我很傻。正在解決我對'child.stdout.on('data',data)'的承諾,並想知道爲什麼我的輸出不完整並被隨機截斷。如果遇到這個問題,請將數據存儲到首先在您的'child.on('close')'事件中解析/拒絕的變量中,如同在此答案中一樣。謝謝@fuwaneko – GrayedFox 2018-03-05 05:24:38