私はこの問題で長い間働いていて、たくさんのサイトをサーフィンしましたが、説得力のある答えは見つかりませんでした。 私の要件を説明しましょう。私は端末からの入力を受け入れ、それらの入力を使用して一連の命令を実行し、次にprocess.stdin
をnodejsに入れて、端末からの新しい入力セットを受け入れます。process.stdinを使用してnodejsの端末からの動的入力を受け入れる際の問題
下記のサンプルコードをご覧ください。親切に私の間違いを軽く投げ、指示を伝える良い方法は、これは私がより良く学ぶのに役立ちます。
input();
console.log("Completed 1");
input();
function input()
{
process.stdin.setEncoding('utf8');
process.stdin.resume();
process.stdin.on('data',function(text){
console.log("Type: " + typeof text);
if(text == "quit"){
console.log("Inside if");
done();
}
console.log("Received: " + text);
});
}
function done(){
console.log("Exiting");
process.exit();
}
私はこのコードを実行すると、私の入力が「終了」であれば、このテキストは一致していないと、If条件を入力していません。それは何かを受け入れ続けます。
このソリューションでは、これはまだ非同期に動作しているworking.Butです。前述したように、行ごとにコードを実行する必要があります。 PFB出力 **ディーパックする@ディーパック-VirtualBoxは:〜/デスクトップ$ノードが1 を完了 をtest.jsちょっと 受付:ちょっと 受付: は** を終了する場合はちょっと が、私はこれを削除した内部 を終了コード行 "console.log(" Type: "+ typeof text);" 他のパッケージを使用せずに同期実行を行うにはどうすればよいですか? – DeepakBilikere
上記の編集を参照してください。 –
あなたが提案したコールバックを考慮して、plesはquesのコードスニペットを参照してください。 ** 1。** input()を呼び出しています。これは、インラインのコンソール文を印刷する(またはビジネスロジックを使用する)場合にのみ、完全に実行する必要があります。 ** 2。**私がinput()でコールバックを持っていれば、あなたが提案した解決法に従って、input()を再利用することはできません。コールバック関数の同じコードセットは、 )。私があなたが紹介した文書を見て、それらのいくつかを試しましたが、私の要件を満たしませんでした。これはダムかもしれませんが、私はいくつかの助けを求めます。 – DeepakBilikere