亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以將系統輸出放入 javascript 中的 var 中?

是否可以將系統輸出放入 javascript 中的 var 中?

30秒到達戰場 2022-01-20 17:26:27
有沒有辦法將系統 shell 輸出的結果放入 var 中,例如:exec('echo test', (error, stdout, stderr) => {  if (error) {    console.error(`exec error: ${error}`);    return;  }  console.log(`stdout: ${stdout}`);});并將控制臺日志輸出保存到 var
查看完整描述

1 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

有幾種方法!首先,您應該注意,在上面的示例中,標準輸出已經在適當命名的變量中可用:


exec('echo test', (error, stdout, stderr) => {

  if (error) {

    console.error(`exec error: ${error}`);

    return;

  }

  console.log(`stdout: ${stdout}`); // right here

});

但是,我假設您希望能夠在回調之外訪問該值。您可以依靠exec返回 a的事實,ChildProcess而后者又公開了一個表示進程標準輸出的可讀流:


const subprocess = exec('echo test')

let stdout = "";

subprocess.stdout.on('data', (chunk) => {

  stdout += chunk.toString();

});

subprocess.stdout.on('end', () => {

  console.log(`stdout: ${stdout}`); // stdout is now complete

});

但是您還應該注意,盡管從技術上講,該變量可以在回調之外訪問,但實際上直到另一個回調之后才準備好。這是因為exec是異步的,所以它的結果同樣需要異步訪問。


如果這給您的用例帶來了問題,一種替代方法是使用同步執行您的子進程execSync,在這種情況下,您的 stdout 只是直接從調用中作為緩沖區返回:


const stdout = execSync('echo test').toString();


查看完整回答
反對 回復 2022-01-20
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號