Callback 函式

Callback

  • 是 Javascript 語言中最基本的 async 單元。

原理

  • 將函式傳給另一個函式
  • 把 B 函式傳給 A 函式,告訴 A 函式執行完後,呼叫 B 函式。

使用情境

  • 非同步事件
  • 需要先做某事,結束後接續做另一件事。

缺點

  • callback 表達非同步執行流程的方式,相當的非循序式,使得難以推理程式的運作邏輯。
  • 控制反轉 (inversion of control) 導致的信任問題

控制反轉(IOC)

  • 將控制權交給另一方

Callback 地獄

信任問題

  • 傳了 callback 函式給另一個函式,但是它結束的時候沒 call。
  • 預期只會 call 一次,但 call 了好幾次。
  • 發生錯誤或例外狀況時,沒有接到 callback。

範例

範例一

function step1(message, callback){
  console.log('step1');
  callback();
}

function step2(){
  console.log('step2');
}

step1('Hello World', step2);

範例二

function add( num, callback ) {
    num = num + 1;
    callback( num );
}

add( 2, function( ans ) {
    console.log(ans);
});

範例三

$("button").click(function(){
    $("p").hide("slow", function(){
        alert("The paragraph is now hidden");
    });
});

延伸閱讀

results for ""

    No results matching ""