我正在使用Node的readline
,但它仅在第一次使用时有效。
第一次尝试时,一切正常(answer
已记录并且readline
已关闭),但是另一次好像readline
尚未关闭(answer
从未记录并且控制台仍然在等待我的输入,即使我已经发送了它。
我在Node.js中有一个类(将ES6与Babel和Nodemon结合使用),该类在构造函数中具有readline
。
class SomeClass
{
constructor(readline) {
this.readline = readline;
}
askPath() {
this.readline.question('Question: ', (answer) => {
console.log(answer);
this.readline.close();
this.askPath();
});
}
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let someClass = new SomeClass(rl);
someClass.askPath();
控制台看起来像:
> Question: answer
> answer
> Question: second answer
> I can still write
> nothing happens...
答案 0 :(得分:1)
请不要在回调内部调用.close()
函数,因为它会关闭整个readline接口
askPath() {
this.readline.question('Question: ', (answer) => {
console.log(answer);
this.askPath();
});
}
正如documentation所说:
rl.close()方法关闭readline.Interface实例,并放弃对输入和输出流的控制。 [source:nodejs.org]