node.js - 在 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()
,它可能会在接受任何输入之前关闭界面。我怎样才能避免这种情况?
谢谢回答!
解决方案
像这样将其包装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();
推荐阅读
- javascript - 为什么相同的 HSM 密钥每次都验证到不同的以太坊地址?
- android - 使用 ConstraintLayout 中具有纵横比的视图填充剩余空间
- c# - 在 C# 中添加单选按钮和评级视图
- c# - 如何在利用 orchard CMS 的 Web 应用程序中使用多个数据库?我应该如何在 settings.txt 文件中指定相同的数据库?
- python - 为什么在使用列表推导而不是生成器表达式时更新列表更快?
- c++ - to_wait_duration with boost asio
- matlab - 为什么单元格值在循环中显示为空,但在直接引用时填充?
- r - 从 dtm 中删除单词
- excel - 将 xls 文件转换为文件名包含 [ ] 的 csv
- php - 如何防止覆盖 PHP 类中的父属性?