1
ノードバージョン8.1.0を使用しています。 端末で最初に入力した後に読み取り線がぶら下がる
はreadlineの上のドキュメントを読んでいた: https://nodejs.org/docs/latest-v8.x/api/readline.html国closeメソッドを、それが述べている:
readline.Interfaceインスタンスは、「閉じる」一度 「完成」されていると考えるべきイベントが送出されます。
当然、私は私の例で行ったように、新しいインターフェースを開くでしょう。
const readline = require('readline');
function question(question, defaultAnswer) {
// Create the interface
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
return new Promise((resolve, reject) => {
rl.question(question, (answer) => {
// Relinquished control over the input and output streams
rl.close();
if (answer.length === 0) {
resolve(defaultAnswer);
} else {
resolve(answer);
}
});
});
}
(async() => {
let answer;
answer = await question('1? [y] ', 'y');
console.log('answer', answer);
answer = await question('2? [y] ', 'y');
console.log('answer', answer);
answer = await question('3? [y] ', 'y');
console.log('answer', answer);
})();
出力:それはしかしハング
$ node test.js
1? [y] y
answer y
2? [y]
。なぜ私は考えていない?残念ながら、Macに座っていると、これがこれに影響するかどうかは分かりません。
ノードバージョン9.1.0のMacでコードをテストしました。すべてうまく動作します。ここには何もありません。 – rweisse
私はSierra 10.12.6も実行しています。しかし、ノードはOSから独立している必要があります。ノードのバージョンをv9.2.0に更新しようとする可能性があります。 readlines libを9.0.0から9.2.0に変更していません。しかし、おそらく、readlineの機能に影響を与える他のlibにいくつかの変更が加えられています。 – rweisse