ひどうきよびだし


コールバック関数

  • 別の関数(A)に伝達する伝達パラメータ(パラメータ)の関数(B)
  • パラメータを渡す関数(A)は、必要に応じてコールバック関数(B)を直ちに(同期)実行してもよいし、後で(非同期)コールバック関数を実行してもよい.
  • function B() {
      console.log("called at the back!");
    }
    
    function A(callback) {
      callback(); //callback === B
    }
    
    A(B);

    blocking vs non-blocking



    コーヒー注文の動機vs非同期


    モチベーション-リクエストの結果が同時に発生します.
  • のお客様はアメリカンコーヒーを1つください.
  • 号を受け取った職員はアメリカンコーヒーを飲みます.
  • スタッフがお客様にアメリカンコーヒーを1つプレゼントします.
  • のお客様はカフェラテを2時に注文します.
    (お客様2アメニティがお客様1に届くまで注文できず、列に並ぶしかありません.)
  • 受付のスタッフがカフェラテを作ります.
  • スタッフがお客様2にカフェラテを渡します.
  • 非同期:要求は同時に結果を生成しません.

  • お客様はアメリカンコーヒーを1つください.
  • 号を受け取った職員はアメリカンコーヒーを飲みます.
  • アメリカンコーヒーが完成すると、従業員がお客様を呼びます.//callback
  • スタッフがお客様にアメリカンコーヒーを1つプレゼントします.

  • お客様、カフェラテを2時にお願いします.
  • 受付のスタッフがカフェラテを作ります.
  • カフェラテが完成すると、スタッフがお客様2を呼びます.//callback
  • スタッフがお客様2にカフェラテを渡します.
  • <特性>
    リクエストはブロックされていません.
    応答は非同期です.
    注文に応じたコールバックは後で実行されます.

    非同期関数伝達モード


    非同期関数伝達モード1.コールバックモード
    let request = 'caffelatte';
    orderCoffeeAsync(request, function(response) {
    	//->	주문한 커피 결과 
        drink(response);
    });
    非同期関数伝達モード2.イベント登録モード
    let request = 'caffelatte';
    orderCoffeeAsync(request).onready = function (response) {
    	
        //response ->주문한 커피 결과 
        drink (response);
    };