告诉我,如果我错了.JavaScript代码作为单个线程执行.
以下JavaScript代码的执行顺序为A,B和C.
<script src="A"> .... </script>
<script src="B"> .... </script>
<script src="C"> .... </script>
Run Code Online (Sandbox Code Playgroud)
下面代码的执行将取决于代码和给每个脚本的时间意味着首先'A'将开始执行(或'B',不知道),'A'的执行将停止,因为给定的时间它完全比其他人得到相同的机会说'B',而不是'C'和'A'再次恢复,循环继续,直到每个脚本的执行完成.
<script async src="A"> .... </script>
<script async src="B"> .... </script>
<script async src="C"> .... </script>
Run Code Online (Sandbox Code Playgroud)
但是,当存在同步和异步脚本时会发生如下所示的情况.
<script sync src="A"> .... </script>
<script async src="B"> .... </script>
<script sync src="C"> .... </script>
<script sync src="D"> .... </script>
<script async src="E"> .... </script>
Run Code Online (Sandbox Code Playgroud)
该async属性仅仅意味着该脚本就会被下载了一段时间以后,因此将开始执行一段时间以后.<script>将立即下载没有该属性的标记并阻止页面的其余部分,直到下载和执行完成.
async它不是意味着,一旦脚本运行时,它可能会在任何时候中断,另一个脚本可能会开始运行.这是合作的多任务/ CPU调度,绝对不是这里发生的事情.async碰巧完成下载的第一个脚本将运行,直到完成为止,此时下一个脚本将开始运行(如果有的话).
所以,是的,async你不知道什么时候你的脚本会开始执行,但是一旦它完成,它就是唯一运行的东西,直到它放弃那个权力(意味着脚本和/或函数退出).
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |