iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0

技術筆記

最近很著迷Akshay的影片,他真的把JavaScript講得好簡單易懂喔!真感謝有他,每天開開心心看個兩三集,是我的大補帖XD

複習Callback

  • 當想到非同步,就會想到callback
  • 舉例:點餐->等待->取餐->買飲料,一件事接著一件事
console.log('點餐');
console.log('等待');
console.log('取餐');
console.log('買飲料');

devtool印出結果
https://ithelp.ithome.com.tw/upload/images/20231009/20163234cgwZQicGEp.png

如果今天我們想節省時間,等取餐這段時間先去買飲料,再回來取餐

console.log('點餐');

setTimeout(function () {
 console.log('取餐');
 }, 5000)
 
 //setTimeout裡面的function即為callback function

console.log('買飲料');

devtool印出結果
https://ithelp.ithome.com.tw/upload/images/20231009/20163234FS1PNR90nd.png

Callback兩大缺點- 1.Callback Hell

  • 舉例

引用Akshay在影片中的購物車相似的例子

  • 試想整個流程
    1.開始新的訂單 creat order
    2.進行結帳 proceed to payment
    3.顯示訂單內容 show order list
    4.更新餘額 update wallet
  • 因為一件事接著一件事發生,所以用callback來實現
    https://ithelp.ithome.com.tw/upload/images/20231009/20163234C5jjQPjnp2.png
    但這樣一直接續下去就會形成所謂的callback hell,讓程式變得難以閱讀以及難以維護
  • 這個就是使用callback最大的缺點之一

Callback兩大缺點- 2.Inversion of Control

  • 使用callback時,基本上我們就是把主控權從一個function傳遞給另一個function,但這個風險非常高,我們無法掌握哪一個步驟會出問題,例如欲訂購的品項缺貨,或者結帳結了兩次等等

心得

了解callback這兩大缺點後,會提醒自己當寫程式要用到callback時,要把這兩件事放在心上,看是不是有需要改用為改善這兩個缺點應運而生的promise,這個也就是明天要講的主題囉!

參考資料

童言童語

努力看完天書後,來點輕鬆的吧!分享我兒子的童言童語,調劑身心一下

5歲樂咖+2歲嗨啾 = 我的神奇寶貝 皮咖啾

2021/06/17
咖:媽媽,冰塊太滿了,你幫我拿,我要開店!
媽:你是老闆耶!要開店要自己拿啊!
咖秒回:你是店員耶!店員要幫老闆拿啊!
媽:我什麼時候是你的店員了?
咖:你每天都要當我的店員!

/images/emoticon/emoticon02.gif


上一篇
Day23 精神食糧3
下一篇
Day25 Promise 上
系列文
豆芽班日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言