javascript - setTimeout和同步

标签 javascript

有代码:

<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script2.js"></script>

脚本.js:

setTimeout(function(){
    console.log("first");
}, 15);

script2.js:

setTimeout(function(){
    console.log("second");
}, 10);

运行时我得到了不同的结果。一次输出为:

second
first

但是另一次:

first
second

由于给定的时间延迟,它不应该始终处于“第二,第一”顺序吗?

最佳答案

你有一个简单的竞争条件。

规范保证脚本文件按顺序运行。这意味着浏览器可以同时尝试下载文件,但即使 script2.js 在 script.js 之前加载,script.js 也会先运行。

但是,如果 script.js 加载速度很快并在 script2.js 仍在从服务器下载时执行,则有可能在 script2.js 执行之前至少要经过 5 毫秒。如果发生这种情况,script.js 中的超时将首先执行,输出将为 first, secondary

关于javascript - setTimeout和同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34741328/

相关文章:

javascript - JavaScript Promise 中 return 的用法

javascript - 在没有服务器的情况下从文件输入中检索图像数据

javascript - 当溢出 :auto, 时不要改变宽度值(最大宽度)。 (滚动条 CSS)

javascript - 有没有更好的方法来执行 "x = y ? y : x"?具体在JS

javascript - 从另一个 Controller 单击按钮时更新第一个 Controller 的 ng-model

javascript - 我可以在没有 Ender 的情况下将 qwery 与 bean 一起使用吗?

javascript - 使用 Css 或 Jquery 移动 Div

javascript - if 和 elseif 语句都触发

javascript - 读取FF中剪贴板的内容

javascript - 如何将 .js 文件包含到项目的所有 jsp 页面中而不对其进行编辑?