2017-03-16 7 views
0

PowerShellコマンドを実行して関連する出力を読むためにnpm 'powershell'パッケージを使用しています。標準のコマンド出力を返す関数を書いて(関数を呼び出してアサーションなどでその戻り値を使用できるようにしたい)。JavaScript - 匿名関数のパラメータからの戻り値

const PowerShell = require("powershell"); 

var myFunction = function (command) { 
    let ps = new PowerShell(command); 

    ps.on("error", err => { 
     console.error(err); 
    }); 

    ps.on("output", data => { 
     console.log(data); 
     //return data; <-- this does not work 
    }); 

    ps.on("error-output", data => { 
     console.error(data); 
    }); 

    ps.on("end", code => { 
     console.log("The end"); 
    }); 
}; 

myFunctionにデータ値を返すようにしたい(標準出力から)。しかし、私はそれを正しく行う方法を知らない。アドバイスをお願いしますか?

+0

のうちの1つを介して、サイトのノードの質問の非同期関数からの戻り値のうちの1つを通過します。 dr - >コールバックまたはPromiseを使用する – paqash

+3

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

+0

あなたの関数を 'Promisify'するか' callback'を渡します。 これを行う方法には、多くの既存のリソースがあります。 – Sachin

答えて

0

コールバックの仕組みを見てください。あなたの関数の例は、

+0

Skabbi、ありがとう。しかし、それは完全な解決策ではありません。 myFunctionが値を返すようにしたいと思います。期待通りに使用してください。 myFunction呼び出しの結果を変数に代入して、この変数を期待通りに使用したいと思います。出来ますか? –

+0

単体テスト・コールバック関数は、使用しているライブラリによって異なります。しかし、コールバックを使って非同期でコールバックを返すことはできません。 あなたは何をしたいのか分かりませんが、別の変数に 'データ'を割り当てることもできますし、[async] ://caolan.github.io/async/)module – Skabbi

+0

Skabbiありがとうございました。残念ながら、私はまだ問題を解決することはできませんでした。私はJasmineフレームワークを使用しています。私は次の式を書いておきたい:expect(commandOutput).toEqual( 'somevalue')。 console.logの代わりにexpectを置くことはできません。もう少しヒントをお願いしますか? –

関連する問題