javascript - 在从命令提示符获取输入之前打印输出?
问题描述
大家好,我是 javascript 的新手。在这些代码中,首先打印 obj,然后输入命令提示符,我使用 async 并等待,请更正代码。
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
async function create() {
let obj = {fname:"",lname:"",email_adds:"",phone_number:""}
readline.question("Enter First name",function(name) {
readline.question("Enter Last name",function(lname){
readline.question("Enter Email address ",function(em){
readline.question("Enter Phone number ",function(ph){
obj.fname = name
obj.lname = lname
obj.email_adds = em
obj.phone_number = ph
readline.close();
});
});
});
});
function print(){
console.log(obj)
}
await print()
}
create()
解决方案
我们可以将其转换为Promise
.
所以console.log
会等到Promise
解决。
该Promise
对象表示异步操作的最终完成(或失败)及其结果值。
如果异步操作成功,则调用resolve
函数返回预期的结果。同样,如果在执行异步操作的过程中发生了一些意外错误,reject
函数也会返回结果。
当其中一个resolve
或reject
被调用时,promise 已经完成。
当then
promise 被解决时触发回调。也可以链接then
方法回调。当catch
promise 被拒绝时执行回调。
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
function create() {
return new Promise(function(resolve, reject) {
let obj = {
fname: "",
lname: "",
email_adds: "",
phone_number: ""
}
readline.question("Enter First name", function(name) {
readline.question("Enter Last name", function(lname) {
readline.question("Enter Email address ", function(em) {
readline.question("Enter Phone number ", function(ph) {
obj.fname = name
obj.lname = lname
obj.email_adds = em
obj.phone_number = ph
readline.close();
resolve(obj);
});
});
});
});
})
}
create().then((res) => {
console.log(res)
})
推荐阅读
- java - 闲置 30 秒后关闭灯
- html - Safari 有时不会水平居中文本
- powershell - 将每个子目录的内容移动到文件夹
- django - 如何从弹出模式引导程序中的链接运行函数
- c# - 很难理解级联删除的工作原理以及如何配置关系
- c# - 如何知道一个小时的文件夹中是否没有新文件
- batch-file - 尝试批量制作“操作系统”
- visual-studio - 在 Visual Studio 2019 中调试时 Dockerfile 似乎没有运行
- reactjs - 如何在没有 redux saga 的情况下调用 reducer 操作
- python-3.x - 无法使用 python 编辑 Heroku 上托管的文件