[英]How can I use readline synchronously?
我只是想等待用户输入密码,然后在继续使用其余代码之前使用它。 错误是Cannot read property 'then' of undefined
。
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Password: ', password => {
rl.close();
return decrypt(password);
}).then(data =>{
console.log(data);
});
function decrypt( password ) {
return new Promise((resolve) => {
//do stuff
resolve(data);
});
}
Readline的question()
函数不返回Promise或箭头函数的结果。 所以,你不能使用then()
。 你可以干脆做
rl.question('Password: ', (password) => {
rl.close();
decrypt(password).then(data => {
console.log(data);
});
});
如果您确实需要使用Promise构建链,则可以以不同方式编写代码:
new Promise((resolve) => {
rl.question('Password: ', (password) => {
rl.close();
resolve(password);
});
}).then((password) => {
return decrypt(password); //returns Promise
}).then((data) => {
console.log(data);
});
您可能不应该忘记.catch()
,否则任何一个解决方案都可以工作,选择应该基于哪个代码更容易阅读。
您可能希望查看其他一些承诺使用模式
如果你害怕使用回调和回调地狱的可能性。 您可以检查readline-sync软件包
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.