首页 > 解决方案 > 在 NodeJS“readline”模块中获取用户的输入

问题描述

在 NodeJS 程序中,我想接受来自控制台的输入。我选择readline这样做。代码可以简化如下:

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

function getInput() {
    rl.question("", (ans) => {
        console.log(ans);
    })
}

getInput();
rl.close();

但是每次我运行这个程序时,它都会在我进行任何输入之前退出。

我认为问题是由语句引起的rl.close(),它可能会在接受任何输入之前关闭界面。我怎样才能避免这种情况?

谢谢回答!

标签: node.jsreadline

解决方案


像这样将其包装getInput在一个承诺中:

function getInput() {
    return new Promise(function (resolve, reject) {
        rl.question("what's your option? ", (ans) => {
            console.log(ans);
            resolve(ans);
        });
    });
}

// and await here

await getInput();
rl.close();


推荐阅读