使用Node版本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上,我不知道这是否会影响到这一点。
答案 0 :(得分:1)
所以我在这里提交了一个错误报告:https://github.com/nodejs/node/issues/17495
这是Node 8.1.0的已知问题。从8.1.0更改为任何其他版本使其工作。