序文: js はシングルスレッド言語なので、非同期にすることは不可能です。しかし、js のホスト環境 (ブラウザ、ノードなど) はマルチスレッドです。ホスト環境によって、js は何らかの方法で非同期特性 (イベント駆動) を持ちます。 js では、一般的にすべてのタスクを 2 つのカテゴリに分類します。1 つは同期タスク、もう 1 つは非同期タスクです。非同期タスクには、マイクロタスクとマクロタスクというさらに詳細な分類があります。 1. コンセプト1.1 マクロタスクマクロタスク ---- JS 内部タスクと 1.2 マイクロタスクマイクロタスク ---- マイクロタスクは通常、一連のアクションに関するフィードバックの提供など、現在の同期タスクが完了した直後に実行する必要があるタスク、または新しいタスクを割り当てずに非同期で実行する必要があるタスクであり、パフォーマンスのオーバーヘッドを削減できます。 2. 実行順序まずコードの一部を見て、実行順序について説明しましょう。 コンソール.log(1) タイムアウトを設定する(() => { コンソール.log(2) }) Promise.resolve().then(() => { コンソール.log(3) }) コンソール.log(4) 上記のコードによって出力される結果は 1 4 3 2 です。上記のコードから、実行順序は次のようになることがわかります。 最初に同期コードを実行します。非同期マクロタスクに遭遇すると、非同期マクロタスクをマクロタスクキューに入れます。非同期マイクロタスクに遭遇すると、非同期マイクロタスクをマイクロタスクリストに入れます。すべての同期コードが実行されると、非同期マイクロタスクをリストからメインスレッドに転送して実行します。非同期マイクロタスクの実行後、非同期マクロタスクをキューからメインスレッドに転送して実行します。すべてのタスクが実行されるまで、このサイクルが継続されます。
3. タスク関係マクロタスクが主流です。js 各マクロタスクの後にはマイクロタスク キューが続きます。マイクロタスク キューに命令またはメソッドがある場合は、それらが最初に実行されます。そうでない場合は、すべてのマクロ タスクが完了するまで、次のマクロ タスクの実行を開始します。 4. タスクの詳細マクロタスクの後にもマイクロタスクが存在するのはなぜですか?これは、マクロタスクがパフォーマンスをあまりにも多く消費するためです。以前に準備されたいくつかのメソッドが必要で最後に実行され、新しいマクロタスクを追加したくない場合は、これらのメソッドを 1 つずつマイクロタスク キューに入れることができます。このマクロタスク内のコードが実行されると、マイクロタスク キューが実行されます。 したがって、現在の同期コードが実行され、非同期タスクに遭遇した場合、それが非同期マクロタスクであれば、次のラウンドのマクロタスクキューに配置され、非同期マイクロタスクであれば、マイクロタスクキューに配置され、現在のマクロタスクに続きます。マイクロタスクは、マクロタスクの小さな末尾に相当します。したがって、現在のマクロタスクが実行されると、その後ろで待機している非同期マイクロタスクは、継続実行のためにすぐにキューに入れられます。非同期マクロタスクは次のラウンドまで待機する必要があるため、非同期マイクロタスクがマクロタスクの前に実行されます。 以下もご興味があるかもしれません:
|
1. 2種類のDMAマッピング1.1. 一貫性のあるDMAマッピング主に長期間使用されるエリアをマッ...
序文MySQL クラスターを構築する場合、当然のことながら、データの一貫性を確保するために、データベ...
1. zipインストールパッケージをダウンロードするMySQL サーバー 8.0.22 の圧縮パッ...
この記事では、参考までにVMWare LinuxにMySQL 5.7.13をインストールするチュート...
目次1. はじめに2. 利点3. 使用手順1. Vuexをインストールする2. Vuexを参照する3...
エフェクト表示組み込みのブートインターフェースがあまりにも醜いので、テーマをダウンロードして美しくし...
目次コンポーネントの登録コンポーネントの追加ソースコードドラッグ可能なテキスト ボックスでは、ユーザ...
.NET SDK ダウンロード リンクhttps://dotnet.microsoft.com/do...
この記事では、主に Vue バックグラウンド管理システムのページング機能の実装を紹介し、次のように共...
序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...
この記事では、テーブルのページング効果を実現するためのjQueryの具体的なコードを参考までに紹介し...
シナリオ:テーブル内のデータは、同期ツールを使用して他のデータベースと同期する必要があり、増分同期に...
1. まず公式ウェブサイトにアクセスしてMySQLインストールパッケージをダウンロードします参考: ...
前回の記事では、ソース コードを使用してロック関連の情報をデバッグする方法を紹介しました。ここでは、...
外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...