2016-06-27 3 views
2

私はnode.jsを初めて使用し、それを即座に学習します。タイムアウトのあるCLIからのユーザ入力を促すコードを書いています。問題は、後続のコード行が実行され、ユーザーの入力を待っている間に一時停止されないことです。どのように私はノードでこれを達成するのですか?私はにconsole.log( "こんにちは")を行う場合は、以下の私のコードですノードjs - ノードjsのユーザー入力を待っている間に、後続のコード行の実行を一時停止する方法

var readline = require('readline'); 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

waitForUserInput = function (timeout) { 
var timer = setTimeout(function() { 
    console.log("Process Resumed.."); 
    rl.close(); 
}, timeout); 

rl.question("Press Enter to Continue..!!", function() { 
    console.log("Process Resumed.."); 
    clearTimeout(timer); 
    rl.close(); 
});} 

メソッド呼び出しは、今のよう

waitForUserInput(5000); 

です。出力は

プロセスが一時停止しています。 Enterを押して続行してください.. !! こんにちは

console.logメッセージは、ユーザー入力またはタイムアウト後にのみ入力します。

+2

これはできません。代わりに、約束を使用してください。 – SLaks

+0

例を挙げることができますか? –

答えて

1

Node.jsプロセスの実行を決して停止しないでください。 Node.jsはEventLoopの上に構築されています。 Node.jsでは、コードは非同期で動作するはずです。ユーザーにキーボード入力を求め、ユーザーが入力を完了するとトリガーされるコードを登録します。

どの種類のコマンドライン入力でも、Inquirer.js packageを使用することをお勧めします。 promptを作成し、thenブロックのユーザー入力を処理する必要があります(エラーなしで約束が満たされたときにthenが呼び出されます)

+0

ありがとうございます。私はこれを試してみる。 –

関連する問題