iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
自我挑戰組

學習NodeJS的30天系列 第 7

Day7 JS-Callback

在進入下一個NodeJS部份前想先講一下Callback(回呼),這個概念不會佔太大的篇幅,所以這篇可能會有點短...

Callback

回呼是指將某個函式(A)傳入另一個函式(B),A函式在B執行時並未直接被執行,而是透過B函式設計的某個時間點或情況觸發A函式被執行。意即先設定一個情況下所會被觸發的程式碼,在該情況發生時才會被呼叫並執行。

https://ithelp.ithome.com.tw/upload/images/20210922/20139980236EbElXl1.jpg

實作看看

Callback印出字串

  1. 定義一個包含回呼函式callbackgreet函式。
function greet(callback){
  console.log("Hello!");
  callback();
}
  1. 呼叫greet函式並定義回呼函式內容。
greet(function(){
  console.log("Callback is envoked.");
});
  1. 執行後會先印出greet函式中的字串,然後是被觸發的回呼函式所印出的字串。

https://ithelp.ithome.com.tw/upload/images/20210922/20139980kOsFZl6MQZ.png

具有參數的Callback

  1. 定義一個包含data資料與回呼函式callbackgreet函式,將data作為callback的參數。
function greet(callback){
  console.log("Hello!");

  let data = {
    name: "chwk",
    time: new Date()
  }
  callback(data);
}
  1. 呼叫greet函式並定義回呼函式內容,印出data
greet(function(data){
  console.log("Callback is envoked.");
  console.log(data);
});
  1. 執行後會先印出greet函式中的字串,然後是被觸發的回呼函式所印出的字串及greet中定義的data,可以知道回呼函式在greet中就被定義,因此傳入的參數可以在觸發時直接取得印出。

https://ithelp.ithome.com.tw/upload/images/20210922/20139980RKToaG3CFF.png

小結

回呼函式的被觸發除了像前面練習所使用的函式內直接呼叫外,也可以是因為事件進行觸發,這部分在接下來的NodeJS部份會再提到,謝謝大家今天的閱讀。


上一篇
Day6 JS-Object與Inheritance
下一篇
Day8 NodeJS-libuv與Asynchonous
系列文
學習NodeJS的30天30

尚未有邦友留言

立即登入留言