Readline仅适用于第一次

时间:2019-12-03 09:59:47

标签: node.js

我正在使用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...

1 个答案:

答案 0 :(得分:1)

请不要在回调内部调用.close()函数,因为它会关闭整个readline接口

askPath() {
    this.readline.question('Question: ', (answer) => {
        console.log(answer);
        this.askPath();
    });
}

正如documentation所说:

  

rl.close()方法关闭readline.Interface实例,并放弃对输入和输出流的控制。 [source:nodejs.org]