我创建了此样本网页,以通过多次运行相同的阻塞调用来创建延迟。这里的问题是,JavaScript需要花费一些时间才能计数到50,000(大约4秒),至少在javascript控制台中看起来是这样,但是警报调用在chrome计数到50,000之前运行。为什么会这样?
<html lang="en">
<head>
<title>Document</title>
</head>
<h1>Hello World</h1>
<body>
<script>
for(let i = 0; i < 50000; i++) {
console.log("Loaded")
}
alert("loaded")
console.log('WEB PAGE: Hello World')
</script>
</body>
</html>
答案 0 :(得分:1)
没什么错,您看到的是浏览器造成的延迟。
将日志记录拖放到for循环中,并仅使用它循环多次即可使一切变得更快。
注意:您并不是真的没有描述这一点。如果要等待50,000,那意味着什么?是几秒钟或更短?这只是对某些慢速api调用的测试吗?还是简单地写出1-5万?如果您能解释更多,答案可能会更容易提供。
请参阅我对此添加内容的评论:
var count = 0;
for(let i = 0; i < 50000; i++) {
count++;
}
console.log(count);
答案 1 :(得分:1)
console.log将使数据排队,并在进程结束时将其写入,它不会同步写入字符串,并且由于您排队了很多数据,浏览器完成计数并在显示控制台数据之前显示了警报。 / p>