async

script 要素 async 属性 (HTML)

[12] script 要素async 属性は、外部スクリプト資源非同期的に取得して、 その準備ができ次第実行するべきことを表します。

仕様書

意味

[3] async 属性は、スクリプトがどう評価されるか指定するものです >>2

[6] 古典スクリプトの場合、構文解析並列に fetch が行われてから、準備ができ次第すぐに (構文解析が未完であっても) 評価することを求めるものです。指定されなかった場合は defer 属性の指示によります。 >>2

[7] モジュールスクリプトの場合、 モジュールスクリプトおよびその依存物は構文解析並列に fetch が行われてから、準備ができ次第すぐに (構文解析が未完であっても) 評価することを求めるものです。指定されなかった場合も構文解析並列に fetch が行われますが、評価は構文解析が完了してからとなります。 >>2

文脈

[4] script 要素の種別が古典スクリプトモジュールスクリプトの時、 指定できます >>2

[9] script 要素の種別がデータブロックの時は、 async 属性を使ってはなりません >>1

処理

[5] script 参照。

[33] async 属性が追加された時、 script 要素「非ブロッキング」フラグが設定されていたら、 そのフラグを削除しなければなりません >>32

[28] なお、初回処理時の値が使われるので、動的に変更しても、意味を持ちません >>2

HTMLScriptElement インターフェイス async 属性

[15] HTMLScriptElement インターフェイスasync IDL属性は、 スクリプト非同期的に実行されるかどうかを表します >>13

[16] 取得時には、次のようにしなければなりません >>13

  1. [17] 文脈オブジェクト「非ブロッキング」フラグが設定されていれば、
    1. [18] を返します。
  2. [26] それ以外なら、
    1. [27] async 内容属性ブール値として反映するIDL属性取得器の処理を行います。

[19] 設定時には、指定値について次のようにしなければなりません >>13

  1. [20] 文脈オブジェクト「非ブロッキング」フラグが設定されていれば、
    1. [21] 文脈オブジェクト「非ブロッキング」フラグを削除します。
    2. [22] 指定値なら、
      1. [23] 文脈オブジェクトasync 内容属性を、 空文字列に設定します。
    3. [24] それ以外なら、
      1. [25] 文脈オブジェクトasync 内容属性を削除します。
  2. [29] それ以外なら、
    1. [30] async 内容属性ブール値として反映するIDL属性設定器の処理を指定値について行います。
[31] async 属性の追加では「非ブロッキング」フラグが削除されることになっていますが、 本設定器経由の場合は属性が変更されない場合や削除される場合も「非ブロッキング」フラグが削除されることになります。

関連

[11] defer も参照。

歴史

[8] IRC logs: freenode / #whatwg / 20091009 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20091009

[10] Last Week: Asynchronous script execution and GPU Acceleration by default « Peter Beverloo ( ( 版)) http://peter.sh/2010/09/last-week-asynchronous-script-execution-and-gpu-acceleration-by-default/

[14] Bug 22696 – inline <script async> ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=22696

[43] Add <script type="module"> and module resolution/fetching/evaluation · whatwg/html@cd1a9fb ( 版) https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4

[34] (Re)disallow script defer/async attributes w/o src (sideshowbarker著, ) https://github.com/whatwg/html/commit/3c5180a08f90a375c64f8191f32f8c7ddfec0ba3

[35] Fix authoring guidance to allow async="" on inline module scripts (domenic著, ) https://github.com/whatwg/html/commit/271f19c34786db04a17c16c24807a33113894a68

[36] async="" should be allowed on inline module scripts · Issue #3319 · whatwg/html () https://github.com/whatwg/html/issues/3319

[37] Fix authoring guidance to allow async="" on inline module scripts by domenic · Pull Request #3324 · whatwg/html () https://github.com/whatwg/html/pull/3324

[38] Editorial: improve async attribute description (co16353sidak著, ) https://github.com/whatwg/html/commit/2b1c10493d3a6f726aa1bcc032eee161ffd3f960

[39] "async — Execute script when available, without blocking" · Issue #4171 · whatwg/html () https://github.com/whatwg/html/issues/4171

[40] Updated async short description by co16353sidak · Pull Request #4351 · whatwg/html () https://github.com/whatwg/html/pull/4351

[41] Allow `async` and `includes` as member names (#769) (saschanaz著, ) https://github.com/heycam/webidl/commit/94c320e0e090d1cab63ac9ef4622eb1c01b3092c

[42] Allow `async` and `includes` as member names by saschanaz · Pull Request #769 · heycam/webidl () https://github.com/heycam/webidl/pull/769

[44] Should `async` be allowed as an attribute name? · Issue #768 · heycam/webidl () https://github.com/heycam/webidl/issues/768

[45] The open() method's "async" argument is now invalid per IDL · Issue #251 · whatwg/xhr () https://github.com/whatwg/xhr/issues/251