2016-05-25 13 views
0

私が間違っているかどうか教えてください。 JavaScriptコードは単一のスレッドとして実行されます。syncタグとasyncスクリプトタグの両方を使用する場合の実行順序は何ですか?

以下のJavaScriptコードの実行は、順番にA、B、Cになります。

<script src="A"> .... </script> 
<script src="B"> .... </script> 
<script src="C"> .... </script> 

コード下の実行は、コードに依存し、各スクリプトに与えられた時間は、最初の「A」が実行を開始(または「B」、知らない)、「の実行することを意味'C'よりも同じチャンスが得られ、 'A'よりも同じチャンスが得られ、各スクリプトの実行が完了するまでサイクルが繰り返されるため、終了します。

<script async src="A"> .... </script> 
<script async src="B"> .... </script> 
<script async src="C"> .... </script> 

しかし、以下のように同期スクリプトと非同期スクリプトの両方が発生するとどうなりますか。

<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> 
+1

これは、 'async'がどのように動作するかではありません。 https://html.spec.whatwg.org/#attr-script-async –

+0

には 'sync'属性はありません。 – deceze

+0

同期の非同期属性なし – MTA

答えて

5

async属性は、単にスクリプトがいつか、後での実行を開始しますので、いつか、後でをダウンロードしてされることを意味します。その属性のないタグはすぐにダウンロードされ、ダウンロードと実行が終了するまでページの残りの部分がブロックされます。

asyncは、スクリプトを実行すると、それはいつでも中断れるかもしれませんし、別のスクリプトを実行し始める可能性があることを意味するものではありませを行います。これは協調マルチタスク/ CPUスケジューリングであり、ここでは何も起こりません。最初のasyncスクリプトのダウンロードが完了するまで実行され、その時点で次のスクリプトがあれば実行を開始します。

スクリプトをときに、はい、asyncであなたがを知らないが実行を開始しますが、それがない一度それが(スクリプトおよび/または関数の終了を意味する)その力を放棄するまで、それが実行されている唯一のものです。

+0

同期と非同期の両方が同時にダウンロードされるとどうなりますか。このようにのようになります。どのスクリプトが最初に実行されるか。 – MTA

+0

同期スクリプトは常に即座に実行されるため、この例では明らかに最初にAが当てられ、最初に実行されます。 Bはいつか*後で実行します。これはすべて非常に原子的であり、あいまいさはあまりありません。すでに実行中のものがありますか?いいえ?さて、すぐに実行してください。はい?次に実行可能な時間に実行をスケジュールします。 – deceze

+0

'

0

私が使用できるsync属性はどこにも見当たりません。私が知る限り、私たちが使用できる唯一の方法はasyncです。

しかし、あなたのクエリのために、あなたは属性なしで使用する必要があり、これが自動的に同期されます:

<script src="A"> .... </script> 
<script async src="B"> .... </script> 
<script src="C"> .... </script> 
<script src="D"> .... </script> 
<script async src="E"> .... </script> 

そして今、あなたの質問に答えるために、

非同期のスクリプトは、同期スクリプトの中にバックグラウンドでロードされています順番に読み込まれ、HTMLやCSSにも影響します。

非同期スクリプトがバックグラウンドで読み込まれ、他の同期スクリプトの前または後に読み込まれる可能性があるので、同期スクリプトと非同期スクリプトを使用してexponpleスクリプトのように使用することは保証できません。

関連する問題