如何实时显示Javascript输出?

如何实时显示Javascript输出?,javascript,Javascript,如果这是一个简单的问题,我深表歉意,但是有没有一种方法可以在每次用户交互时暂停时将Javascript实时输出到控制台。换句话说,如果我做了一件像 console.log(“你叫什么名字:”); 让userName=prompt(“你叫什么名字?”); console.log(用户名); 控制台日志(“\n”); log(“很高兴认识你”+用户名+“!你的年龄是多少?”; 让userAge=prompt(“您的年龄是多少?”); console.log(userAge)您可以使用setTime

如果这是一个简单的问题,我深表歉意,但是有没有一种方法可以在每次用户交互时暂停时将Javascript实时输出到控制台。换句话说,如果我做了一件像

console.log(“你叫什么名字:”);
让userName=prompt(“你叫什么名字?”);
console.log(用户名);
控制台日志(“\n”);
log(“很高兴认识你”+用户名+“!你的年龄是多少?”;
让userAge=prompt(“您的年龄是多少?”);

console.log(userAge)您可以使用setTimeout,如下所示:

console.log("What's your name: ");
let userName = prompt("What is your name?");
console.log(userName);

console.log("\n");
setTimeout(function(){
console.log("Nice to meet you " + userName + "! What is your age?");
let userAge = prompt("What is your age?");
console.log(userAge);
},1000)
注意:这是一种方法,还有很多其他方法

如果您想使用承诺:

let userName,userAge, userSport;
function basic(){
console.log("What's your name: ");
var promise1 = new Promise(function(resolve, reject){
userName = prompt("What is your name?");
resolve(userName)
})
promise1.then(function(value){
console.log(value);
console.log("\n");
console.log("Nice to meet you " + value + "! What is your age?");
var promise2 =  new Promise(function(resolve, reject){
userAge = prompt("What is your age?");
resolve(userAge)
})
promise2.then(function(value){
console.log(value)
console.log("Nice to meet you " + userName + " aged: " +userAge + ". Let us know your favorite sports")

var promise3 = new Promise(function(resolve, reject){
userSport = prompt("What is your favorite sports?");
resolve(userSport)
})
promise3.then(function(value){
console.log(value)
console.log("Nice to meet you " + userName + " aged:  " +userAge + " and your favorite sports is " +value)
console.log("\n");
console.log("Thanks");
})
})
})

}
basic()

您可以使用
async/await
功能和承诺。我个人并不总是喜欢使用
。那么
这就是我使用承诺的版本

constq1=()=>新承诺(解析=>{
让userName=prompt('你叫什么名字?');
log(`What is your name:${userName}`);
解析(用户名);
})
constq2=(用户名)=>新承诺(解析=>{
log(`很高兴认识你${userName}!你的年龄是多少?`);
让年龄=提示('你的年龄是多少?');
控制台日志(年龄);
决心(年龄);
})
const userPrompt=async()=>{
让name=wait Q1();
让age=wait Q2(name);//若要在下一个问题中使用,则将其分配给变量
}

userPrompt()
当您说
console.log(用户名)
时,名称就会显示出来。您希望它写入文档吗?这确实是可能的--您需要使用
Promise()
。看,可能是问题的重复?这段代码运行得很好。Aniket G-它确实会出现,但会立即出现。整个代码立即显示出来。我希望它一步一步地执行,下一个提示只在第一个结果出现在屏幕上之后才出现。谢谢@Adarsh-快速跟进问题-如果我问第三个问题(比如,最喜欢的运动)并再次使用setTimeout功能,它没有任何效果。上面的一个有效,但紧接着的另一个不会延迟第三个问题。我已经检查了这里的其他答案,这些答案似乎反复使用setTimeout,所以我不确定为什么我的答案不能按预期运行。谢谢你需要增加后一个的延迟时间。。如果将两个延迟都保持在1000毫秒,那么它将一个接一个地触发这两个延迟,因为这两个延迟都会等待1000毫秒。尝试将后一个增加到2000毫秒。@FZs True它不是异步的,但它强制代码等待提示符完成后再继续执行
console.log
语句。如果从OP运行初始代码段,您将看到
console.log
语句打印
null
。我同意这不是使用
async/await
的常规方法,但是,我认为没有理由不使用它来强制异步函数等待“长时间运行”的函数。如果我错了,请纠正我。OP的代码段有效(如果单击“取消”,则显示
null
)。但最初的问题是——如果我理解正确的话——比如——看看你叫什么名字:在第一个提示出现之前,在控制台中,你的答案——以当前的形式——也没有完成。和about
await
(来自):如果await运算符后面的表达式的值不是承诺,-它不是-它转换为已解析的承诺:那么代码立即继续。快乐编码@FZs感谢您的澄清,因此我对
wait
的理解似乎不正确。很appreciated@NeillHerbst-只是为了澄清-这意味着用户将收到一个提示(“您的名字是什么?”),回答,然后“您的名字是什么:Jon”将在第二个提示出现之前出现在屏幕上。另外,我不知道它是否是我的浏览器,但当我在JSFIDLE检查代码段时,输出帧中没有显示任何内容。你的不是唯一一个-我有一些问题-不知道为什么-我使用的是最新的Chrome。感谢所有人的帮助-感谢你的帮助!