我很确定很多人遇到过这种情况。对于Ex:你有一个简单的JS自选冒险游戏。
var name = prompt("Name?");
console.log("Hello" + name);
var age = prompt("Age?");
console.log(name + " is " + age + " years old");

会发生什么是显示第一个提示,然后立即显示第二个提示(年龄)。此外,控制台甚至不会打印出“你好”#34; +(姓名),直到你回答两个提示后。无论如何你可以"强制打印"两个提示之间的console.log?
答案 0 :(得分:0)
问题是UI的更新速度比JavaScript执行速度快,这导致与console.log
语句同步的问题。
这是因为JavaScript运行时不负责更新UI,这是浏览器的工作,因此一旦JavaScript要求浏览器更新UI(显示提示),它就会非常快速地执行,因为{{1是一个“阻塞”对话框,所有其他代码都被暂停。
添加短暂延迟可解决问题:
propmt
答案 1 :(得分:0)
您可以使用属于ES6
的发电机功能function * quiz() {
var name = prompt("Name?");
yield console.log("Hello" + name);
var age = prompt("Age?");
yield console.log(name + " is " + age + " years old");
}
var myQuiz = quiz();
myQuiz.next();
myQuiz.next();
工作演示:https://jsfiddle.net/6mzbhLhz/ - 在控制台中查看。