複数のファイルに依存関係がある場合には、async 属性と defer 属性の併用は不可?
複数のファイルに依存関係がある場合には、async 属性と defer 属性の併用は不可でしょうか?
・「Google Maps API」で両方指定しているのは、htmlにjsを直接記述しているから?
質問
・例えば、リンク先でhtmlに直接記述しているjs部分を外部js(init.js)として読み込む場合にはどう書けば良いでしょうか?
案1.
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>
<script async defer src="init.js"></script>
案2.後のみasyncなし
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>
<script defer src="init.js"></script>
案3.asyncなし
<script defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>
<script defer src="init.js"></script>
<追記>
「async 属性」を複数付与した場合は、いつ実行されるかは全く予想がつかないけれども、実行順序は保証される、ということでしょうか?
<script async id="lib" src="https://maps.googleapis.com/maps/api/js"></script>
<script async src="local.js"></script>
・回答いただいた内容は、asyncに対応しているブラウザの場合、最終的に上記と同じ挙動になる、ということでしょうか?
・非同期で最初のスクリプトが処理された後、次のスクリプトが非同期で処理される?
asyncとdefer両方指定した場合、デフォルトはasyncで、asyncに対応していないブラウザのみdeferのタイミングになります