タグで使用されるasync
との違いを理論的に知っています。defer
<script>
async
:スクリプトは、ページの残りの部分と非同期で実行されます (スクリプトは、ページが解析を続行している間に実行されます)。
defer
:ページの解析が完了すると、スクリプトが実行されます。
しかし、彼らが従うメカニズムを理解することはできません。
次の 2 つのファイルが1.js
あり1.html
ます。
1.js
alert('Running external JS');
1.html
<html>
<body>
<script src="1.js" async></script>
<script>
for(var i=0;i<5;i++)
{
alert('HTML code1');
}
</script>
<script>
for(var i=0;i<5;i++)
{
alert('HTML code2');
}
</script>
</body>
</html>
html ファイルが実行alert
され、最初にすべてのステートメントが実行され、最後にスクリプトが実行されます。つまり、 -tagの代わりにin1.js
を使用した場合と同様に動作します。defer
async
<script>
私の予想によると、外部スクリプトは HTML 自体のコードよりもはるかに小さいため、使用している HTML ドキュメントのステートメントの間のどこかでトリガーされているはずalert
ですasync
が、使用の効果と同様に動作しdefer
ます。
ここで何が起こったのか説明してください。また、間違っている場合は修正してください。