1. マイクロタスクとは何ですか? 2. マクロタスクとは何ですか?
3. 事例<スクリプト> コンソール.log(1) タイムアウトを設定します(()=>{ コンソールログ("2") },0) Promise.resolve().then(()=>{ コンソールログ('3') }) コンソール.log(4) </スクリプト> 印刷の順序は なぜこの順番になっているのでしょうか? まず1-4を印刷してください。間違いなく問題ありません。 なぜ最初に 3 が印刷され、次に 2 が印刷されるのですか? なぜなら、 3 は 2はマクロタスクである マイクロタスクはマクロタスクよりも早く実行されます。 3が最初に実行され、次に2が実行されます 3.1 結論
4. コード例<本文> <div id="アプリ"></div> <スクリプト> // このセクションはDOMレンダリングです。let app=document.getElementById("app") let cont='<p>私はpタグです</p>' app.append(続き) // DOMレンダリング終了 console.log(1) タイムアウトを設定します(()=>{ コンソールログ("2") アラート('setTimeout2') },0) Promise.resolve().then(()=>{ コンソールログ('3') 警告('3') }) コンソール.log(4) </スクリプト> </本文> 4.1 コード分析上記コードの実行分析: まず 次に、まずマイクロタスク、次にマクロタスクに従って 3を出力し、3をポップアップします 次に出力2と表示され、 マイクロタスクとマクロタスクの間に 次に そこで 次に出力2と 4.2 結論と応用シナリオMicrotask>DOMレンダリング>Macrotask 次の例を参照してください この結論の適用シナリオ 私たちは皆、eChart を作成したことがあります。eChart をレンダリングするタイミングはわかっています。 ノードは、ページの DOM がレンダリングされた後にのみレンダリングできます。 そのため、一部の友人は、リクエストのタイミングをmonitored()ライフサイクルに配置するでしょう これにより、返されたデータがページ上で正常にレンダリングされることが保証されます。 実際、上記の結論に基づいています。 作成時にデータをリクエストできます。帰ってきたとき。 DOM は確実にレンダリングされます。リクエストはマクロタスクだからです。 マクロタスクの実行時間は DOM レンダリング後です。 以下もご興味があるかもしれません:
|
<<: Alipay の新しいホームページのフロントエンドの実践的な概要
目次概要環境の準備プロジェクトのパフォーマンスに影響を与える要因遅延読み込みとは何ですか?プロジェク...
Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...
一般的な提案は、WHERE 条件のインデックスを作成することですが、これは実際には一方的です。インデ...
必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...
最初は、複数の列のコンテンツのサイズと高さが異なります。ここで、表示する背景を異なるものに設定し、各...
システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...
目次目的モジュールのインストール基本的な使い方ポートをスキャンする開いているポートデータの送信データ...
ユーザー名前空間は Linux 3.8 で追加された新しい名前空間で、ユーザー ID やグループ I...
ARGB は、アルファ (透明度) チャネルが追加された RGB カラー モードであり、32 ビット...
目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...
目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...
ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...
背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...
MySQLサービス8.0.14のインストール(一般)の参考までに、具体的な内容は次のとおりです。イ...
IPツールを取得 lombok.extern.slf4j.Slf4j をインポートします。 org....