簡體   English   中英

Node.js:對象值作為child_process.exec的stdout

[英]Node.js: Object value as stdout of child_process.exec

我是Node的新手,對它的一些非阻塞性元素感到迷tum。 我正在嘗試創建一個對象,並使它的元素之一是一個返回child_process.exec的stdout的函數,如下所示:

var exec = require('child_process').exec;
var myObj = {};

myObj.list = function(){
  var result;
  exec("ls -al", function (error, stdout, stderr) {
     result = stdout;
  });
  return result;
}
console.log('Ta da : '+myObj.list);

我認為myObj.list在設置為stdout之前正在返回result ,但是我無法弄清楚如何使其等待或對其進行回調。 謝謝你的幫助!

您無法直接返回該值,因為它將暫時無法使用。 因此,您需要使用回調而不是返回值,這意味着將調用代碼內在一點。

var exec = require('child_process').exec;
var myObj = {};

myObj.list = function(callback){
  var result;
  exec("ls -al", function (error, stdout, stderr) {
     callback(stdout);
  });
  // No return at all!
}
// Instead of taking a return we pass a callback
// which receives the value and carries on our computation.
myObj.list(function (stdout) {
   console.log('Ta da : '+ stdout);
});

在真實的代碼中,您可能希望讓回調函數將錯誤作為第一個參數,您不必這樣做,但這是在Node.JS中完成操作的正常方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM