[34] 画像や媒体などの読み込みは、スクリプトが終了した後の安定状態において実行される同期区間として定義されています。 この安定状態を提供する処理はマイクロタスクとして定義されています。
[30] 安定状態を待つアルゴリズムは、ネットワークアクセスが発生するものなどです。 スクリプトがそのようなアルゴリズムを実行した直後に同期的に同期区間を実行してしまうと、 スクリプトのその後の部分による操作などで無駄になってしまう可能性があり、 一連のスクリプトを実行し終わるまで遅延させるというのが目的のようです。
[31] 例えば img
要素の src
属性を設定すると画像の読み込みが行われますが、その直後に src
属性や srcset
属性をスクリプトから操作すると元の画像の読み込みは無駄になります。
ですから、当該スクリプトが終わってから読み込みが始まります。
[35] 安定状態を待つとは、 安定状態を提供するマイクロタスクをマイクロタスクキューに入れることをいいます >>2。
[36] あるアルゴリズムに安定状態を提供するマイクロタスクは >>2、
[12] 次の算法は、その途中で並列で実行された後安定状態を待つ部分があり、 同期区間の処理が規定されています。更にその後に非同期算法が続くものもあります。
[20] かつてはこれらをどのような順序で実行するかは特に規定されていませんでした。
[29] かつては、安定状態はマイクロタスクとして実装することも可能ですが、 マイクロタスクはキューによって逐次的に実行されるのに対し、 安定状態に実行される各手順は並列で実行できるものであるから、 仕様上別の概念としていたようです >>26。ただし実際のWebブラウザーは逐次的に実行する実装になっているようです。
[19] スタイルシートが @import
などの参照を持つ場合にスタイルシートをスクリプトから参照可能にしなければならないタイミングは、
イベントループ中の次のレンダリングの際、とされており
<http://www.whatwg.org/specs/web-apps/current-work/#style-sheet-ready>、
実質的に、安定状態の最後に行うということになります。