2017-12-30 3 views
0

こんにちは、私はnode-cmd(https://www.npmjs.com/package/node-cmd)を使って 'dir'のような簡単なコマンドを実行していますが、関数の出力をどこか別の場所に保存したいと思います。私は変数として格納するだけでしたが、動作しません。誰かがこれにいくつかの光を当てることができると思います。ありがとう!node-cmdから出力を取得する

var files=""; 

cmd.get('dir /b /a-d',function(err, data, stderr){ 

      if(err){ 
       console.log(err); 
      } 

      else { 

       console.log(data); 
       files = data; 

      } 
     }); 

console.log(files); 
+0

[非同期呼び出しからの応答を返すにはどうすればよいですか?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-非同期呼び出し) – vibhor1997a

答えて

2

cmdは非同期呼び出しです。
console.log(ファイル)のテストが早すぎます:この時点ではデータはありません。
良い方法は、in関数ではなく、その答えを使用したい関数を返すことです。 Hth

+0

ありがとう!私はアイデアを得ると思うが、私はcmdコマンドとコールバック関数を分割する方法を理解することができませんでした。だから一般的に私はコールバック関数を作成し、特定の時点でコールバック関数を呼び出す必要がありますか? – Jackelll

+1

呼び出しの中で設計した関数を呼び出すのはcmd.getです。コードは機能しますが、cmd.getが関数を呼び出す前にファイル内のデータを使用することはできません。これを確認するには、Console.log(ファイル)の周りを少し待ってループを試してみてください。 – pirela

+0

別の方法は、同期方式で呼び出すことです。ノード同期を参照してください。しかし、あなたはノードの哲学を壊すでしょう。私の意見では、progのinit部分でのみ使用できます – pirela

関連する問題