ひどうきひどうき


コンセプト

  • Blocking:一つのタスクが完了するまで他のタスクができないという概念
  • 同期:一つのタスクの完了時間が別のタスクの開始時間と同じ概念
  • このような不便を解消するために、
    非同期で動作するランタイムを開発した.以下の作業に役立ちます.
  • バックグラウンドの実行、ウィンドウのロードなどのタスク
  • インターネットからサーバにリクエストを送信し、応答待ちのタスク
  • 大きなファイルをロードするタスク
  • 構文


    3つの構文の1つで非同期ストリームを実現できます.
    callback, promise, async/await

    コンセプトアレンジ

  • blocking/non-blocking
  • synchronous/asynchronous
  • callback関数伝達方法
  • メソッドチェーン(Arrayのmap、filterなど)
  • 学習目標

  • どのような場合に重複するコールバックが発生するか理解できる.
  • callbackを重ねる欠点、Promiseの長所が理解できる.
  • Promiseの使用パターンが理解できる.
  • resolvereject・の意味と、thencatch・との関係が理解できる.
  • Promiseはパラメータの伝達方法を理解できる.
  • Promiseの3つの状態が分かる.
  • 理解できる
  • Promise.allの使い方.
  • async/awaitキーワードを知り、その仕組みを知る.
  • Node.jsのfsモジュールの使い方がわかります.
  • 高次関数

  • 他の関数をパラメータとして渡す関数:パラメータで渡す関数をCalback関数と呼ぶ.
  • 他の関数を返す関数:ケリー関数と呼ぶ.
  • 💡 'カレー関数「用語」を使用する場合、「高次関数」は、関数をパラメータとして渡す関数を表します.

    ひどうきよびだし


    電話:同期、ブロック(作業を停止し、電話に出る必要がある)
    テキスト:非同期、非ブロック(作業を停止せずに後でテキストをチェックできます)
    💡 記述者が関数の実行を制御することを許可することは,関数を非同期に実行させることに等しいと考えられる.

    なぜ非動機を学ぶのですか?


    jqueryのajax通信のように,サーバからデータを受信するアプリケーションを開発する際に非常に有用である.これは、データが非同期である場合、データを収集する前に、何の操作も実行できないエラーが発生する可能性があるためです.

    Calbackを使用して非同期化を実現する方法


    関数パラメータとしてのコールバック関数は、最終的には関数内でのみ実行できます.
    非同期APIがあると言ってください.対応するAPIにコールバック関数を追加します.非同期APIの前後で別の関数が実行されている場合、別の関数が最初に実行され、非同期APIのコールバック関数が実行されます.これにより、非同期実装が可能になる.
    // sync
    console.log(1);
    var data = fs.readFileSync('data.txt', 'utf8');
    console.log(data);
    // 실행 순서 => 1, 'data.txt' 파일 내 내용
    
    // async
    console.log(2);
    var data = fs.readFile('data.txt', 'utf8', function (err, data) {
      console.log(3);
      console.log(data);
    })
    console.log(4);
    // 실행 순서 => 2, 4, 3, 'data.txt' 파일 내 내용 
    // (node 비동기 모듈 앞뒤에 있는 함수가 실행이 끝나기 전까지 모듈을 실행하지 않는다.)

    Event Loop


    JSエンジンの構成には、メモリheap、Call Stack、Web API、Callback Queueなどがある.
  • メモリHeap:メモリ割付発生.
  • Call stack:実行コードに割り当てられた行.
  • Web API:非同期処理担当(ノードはバックグラウンドで説明)
  • Callback Queue:非同期処理終了後に実行すべきコールバック関数を順番に割り当てる(Task Queue、Event Queueなど)
  • 『出典:https://poiemaweb.com/js-event>
  • Event Loop
  • 次のコードを実行しましょう.
    console.log('first')
    
    setTimeout(function () {
        console.log('second')
    }, 1000);
    
    console.log('third')
    1) console.log(「first」)がCall stackに追加されます.
    2) console.ログ(「first」)が画面に出力されると、Call stackから削除されます.
    3)settimeout APIがCall Stackに追加されます.その後、Web APIに移行し、Call stackから削除します.
    4) console.log(「third」)がCallstackに追加されます.(Web APIに移行するsettimeoutは、1秒後にCalback Queueに追加され、コールバック方式で渡される匿名関数「(関数){console.log("second")」になります.)
    5) console.ログ(「third」)が画面に出力されると、Call stackから削除されます.
    6)コールスタックが空であるかどうかは、イベントループによって引き続きチェックされる.log(「third」)を削除した後、Calback Queueに含まれる匿名関数をCalstackに入れて関数を実行する(console.log(「second」)
    7) console.ログ(「second」)が画面に出力されると、Call stackから削除されます.