イベントループ


  • イベントループは、非同期関数によってCallback Queueに割り当てられた関数を指定された順序でCall Stackに入れる装置である.
  • イベントループは、コールスタックを常にチェックし、コールスタックが空である場合にのみ、コールキューに割り当てられた関数をコールスタックに格納する.
  • イベントループを理解するために、いくつかの必要な概念についても議論する.
  • 👊Call Stack
  • が実行するコードは、スタックデータ構造のように、ここの行に割り当てられ、先に入ってから出ます(LIFO,Last In First Out).
  • javascriptは、単行文字処理コードを使用します.
  • 👊Web API
  • Webブラウザが提供するAPIを使用して、AJAXまたはTimeoutなどの非同期タスクを実行します.
  • JavaScript実行時は主にJavaScriptエンジンとWeb APIで構成されるため、JavaScriptは非同期でコードを実行することもできる.
  • 非同期の概念は何ですか?簡単に説明するために、ほとんどが映画館を例に挙げています.
  •   const 첫번째손님 = "영화표_1장예매";   ----- 5초
      const 두번째손님 = "영화표_100장예매"; ----- 500초
      const 세번째손님 = "영화표_2장예매";   ----- 10초
      영화예매해주는기계 = function (x) {
        console.log(x);
      };
      영화예매해주는기계(첫번째손님); ----- 5초
      영화예매해주는기계(두번째손님); ----- 505초
      영화예매해주는기계(세번째손님); ----- 난 2장만 뽑으면 되는데 515초 기다려야해?..
  • 上のコードは、非動機を簡単に説明するために構築されたコードである.
  • javascriptは単一スレッド言語と呼ばれ、一度に1つのタスクしか実行できません.つまり、上記のコードのように、3番目のお客様は2番目のお客様の仕事が終わるまで待たなければなりません.
  • 非同期関数は、これらの時間、リソースの浪費問題を解消する.
  •   const 첫번째손님 = "영화표_1장예매";
      const 두번째손님 = "영화표_100장예매";
      const 세번째손님 = "영화표_2장예매";
      영화예매해주는기계 = function (x) {
        console.log(x);
      };
      영화예매해주는기계(첫번째손님);
      setTimeout(function () {       -----비동기함수
        영화예매해주는기계(두번째손님);
      }, 0);                         -----0초뒤에 영화표100장 예매해주세요.
      영화예매해주는기계(세번째손님);
  • settimeout関数は典型的な非同期関数であり、上のコードは0秒後に2番目の顧客のために映画を予約する関数を実行するコードである.
  • settimeout関数のうち2番目にお客様のために映画をプレゼンテーションする関数が実行されると、他の関数も停止せずに実行されます.
  • の不思議な事実は0秒に設定されているが、映画のチケット2枚の前売りはいつも映画のチケット100枚の前売りより早めに出力される.これは、settimeout関数のような非同期関数がCall Stackでスタックされ、Web APIに移動するためである.
  • 👊Callback Queue
  • 非同期処理が終了すると、実行するコールバック関数が順次割り当てられる.
  •   const 두번째손님 = "영화표_100장예매";
      영화예매해주는기계 = function (x) {
        console.log(x);
      };
      setTimeout(function () {
        영화예매해주는기계(두번째손님);
      }, 0);
  • Web APIを記述する最後の部分では、settimeout関数などの非同期関数がCall Stackでスタックされた後にWeb APIに移行すること、すなわち、settimeout関数の関数がCalback Queueに移行することを説明する.
  • 上のコードを例にとると、settimeout関数の映画前売りマシン-2番目のゲスト関数はCallback Queueに移動します.
    (正確にはTask Queue)
  • 👊まとめ
      setTimeout(function () {
        console.log("안녕하세요!");
      }, 0);
    以下、上記の簡単なコードの起動順序について説明し、まとめます.1.settimeout(匿名、0秒)関数をCall Stackに積み上げる
    2.settimeout関数は非同期関数であるため、Web APIに移動する
    3.settimeout関数の匿名関数をCalback Queueに移動
    4.イベントループはコールスタックが空であることをチェックし(常にコールスタックをチェックする)、匿名関数をコールスタックに送信する
    5.匿名関数はCallStackにアップロードされ、匿名関数のコンソールになります.log(「こんにちは!」Call Stackにアップロードして消去すると匿名関数も消去されます
    🤩 PLUS
    これは
  • 人がグーグルを通じて作成したもので、エラーが含まれている可能性があります.
  • 客観的で正確な情報を提供することに力を入れています.
  • 間違った内容があれば、お電話と非難を歓迎します.コメントに書いてください!