在此之前,警报没有被同步呼叫阻止

时间:2019-06-23 06:02:37

标签: javascript

我创建了此样本网页,以通过多次运行相同的阻塞调用来创建延迟。这里的问题是,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>

2 个答案:

答案 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>