我整理了一个脚本,用于通过readline获取用户输入。失败的逻辑的简化版本如下:
const rl = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
function ask() {
return new Promise((resolve, reject) => {
rl.question('Enter input:', (input) => resolve(input) );
});
}
async function logic() {
let result = await ask();
console.log(result); // this console.log seems fine
rl.close()
return result;
}
let a = logic();
console.log(a); // this console.log causes the issue
运行上述命令时,输出为:
Enter input: Promise { <pending> }
调用console.log()
之后,罪魁祸首似乎是logic()
。如果我将其删除,则会按预期请求数据并继续操作。但是,在读取行之后清除代码中的所有日志消息将不适用于此脚本。我该怎么做才能解决此问题?关闭输入后,我需要做些什么来处理process.stdout吗?