1. 4つのコンセプト1. JavaScriptはシングルスレッドですシングルスレッドとは、 2. タスクキュー上記のキューイング問題を解決するために、タスク キューが作成されます。ブラウザに結果を伴う非同期タスクがある場合、それは将来の実行のためにタスク キューに追加され、他のタスクはメイン スレッドで同期的に実行されます。 ここで注意すべき点は、タスク キューにタスクを追加するタイミングは、非同期タスクの結果が出た後であるということです。実際、タスク キューに存在するのは、非同期タスクのコールバック関数です。 3. 同期タスクと非同期タスクJs プログラムにおける同期タスクはメインスレッドで実行されるタスクを指し、非同期タスクはタスクキューに入るタスクを指します。 4. JavaScript実行スタックすべての同期タスクはメインスレッド上で実行され、実行スタックを形成します。メインスレッド上のタスクが完了すると、タスクはタスクキューから取り出されて実行されます。 var name = "zhouwei"; タイムアウトを設定する(() => { コンソールログ(1); }, 1000); console.log(名前); 上記のコードは、ブラウザでは次のように実行されます。プログラムのグローバル実行環境のコードは、main 関数にラップされたコードとして理解されます。このコードの実行スタックは、次の図に示すように変化します。
イベントループJs 実行スタックがタスク キューからタスクを継続的に読み取り、実行するプロセスを タスク キューには非同期タスクの結果が格納されることはわかっていますが、非同期タスクとは何でしょうか?
タスクキューに入る非同期タスクコールバックは、マクロタスクとマイクロタスクに分けられます。マクロタスクとマイクロタスクを実行するための Js 実行スタックのルールを下図に示します。 Js 実行スタックは、最初にマクロ タスク (グローバル コード) を実行し、タスク キューからすべてのマイクロ タスクを読み取り、UI レンダリング (ブラウザー レンダリング インターフェイス) を実行し、タスク キューからマクロ タスクを読み取り、すべてのマイクロ タスクを実行し、UI レンダリングを実行し、…
マクロタスクとは何ですか?
マイクロタスクとは何ですか?
setTimeout 遅延の問題 一般的に、コード内の 3. 実戦次のコード出力を練習してください。 コンソールログ(1); タイムアウトを設定する(() => { コンソールログ(2); Promise.resolve().then(() => { コンソール.log(3) }); }); 新しいPromise(resolve => { コンソールログ(4); タイムアウトを設定する(() => { コンソールログ(5); }); 解決する(6) })。次に、データ => { コンソールにログ出力します。 }) タイムアウトを設定する(() => { コンソール.log(7); }) コンソールログ(8); この質問を分析するには、上で説明した js 実行メカニズムを使用します。 1: グローバルタスクで同期コード出力を実行します。
ここで注意すべき点は、 2: この時点で、タスク キューには 3 つの // この時点でのマクロタスクは setTimeout(() => { コンソールログ(2); Promise.resolve().then(() => { コンソール.log(3) }); }); タイムアウトを設定する(() => { コンソールログ(5); }); タイムアウトを設定する(() => { コンソール.log(7); }) // この時点で、マイクロタスクは then(data => { コンソールにログ出力します。 })
3: 最初のマクロタスクを実行します タイムアウトを設定する(() => { コンソールログ(2); Promise.resolve().then(() => { コンソール.log(3) }); });
このマクロタスクでは、マイクロタスクがタスク キューに追加されます。この時点で、タスク キューには新しいマイクロタスクがあります。 4: マイクロタスクを実行し、出力: 3 それから(() => { コンソール.log(3) }); 5: ルールに従ってタスクの実行を継続します。出力: 5、7 全体的な出力は次のとおりです。
これがあなたの答えですか? 要約:
以下もご興味があるかもしれません:
|
目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...
Docker は、ブリッジ、ホスト、オーバーレイなどの複数のネットワークを提供します。同じ Dock...
1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...
この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....
元のアドレス: https://blog.csdn.net/m0_46579864/article/...
データベース SQL の最適化はよくある問題です。何百万ものデータ ボリュームに対してページング ク...
関数0. 現在の時刻を表示するコマンド: select now()。機能: 現在の時刻を表示します。...
目次意味カーソルの役割カーソルの使用カーソルの宣言カーソルを開くカーソルデータのトラバースカーソルを...
1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカ...
CSSは複数のクラスにマッチする次の HTML タグ li、クラスはオープン スタイルです。私の要件...
目次前面に書かれたログインの概要ログインビジネスプロセスログインサービスの関連技術ポイントログイント...
序文MySQL のマスター/スレーブ レプリケーション関係は、厳密には「同期」または「マスター/スレ...
1. 概要information_schema データベースは performance_schema...
パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...
導入この記事では、Ubuntu 18.04 デスクトップ システムでディスクを目的のディレクトリにマ...