You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionboilWater(callback){console.log('Boil Water');callback();}functionplayGame(callback){console.log('Playing Game');callback();}functiontakeTheBath(){console.log('Take the Bath');}functionaction(){boilWater(functioncookInstantNoddles(){console.log('Cook Instant Noddles');playGame(functionturnOffComputer(){console.log('Turn Off Computer');takeTheBath();});});}action();
參考文章 You Don't Know JS: Async & Performance
關於callback
callback的缺點
無法控制callback什麼時候執行,造成信任度低
以吃飯邊看電視的例子來看,我希望吃東西時配電視看,可是因為沒辦法控制
eatFinish
什麼時候呼叫,所以變成吃飯
->吃飽
->看電視
當過多的callback時,會因為程式碼跳來跳去造成可讀性差
這邊以煮泡麵打電腦完洗澡的例子來看,
我們
煮開水
->煮泡麵
->玩遊戲
->關電腦
->洗澡
,這個流程很正常,但是我們看以下程式碼時,是有點痛苦的,為什麼呢,因為每個動作都黏在一起,煮開水
,去煮泡麵
,可是要煮完泡麵才能玩遊戲
,所以也放放在同一塊,而且強迫看code的人需要一個一個細心理解每行程式碼做到哪要做哪一步驟,這都會消耗蠻多心力,這種寫法也叫做callback hell
。關於promise
Promise改善了什麼
讓我們先回顧一下
callback
的缺點關於async & await
async&await如何改善閱讀上的問題
我們將剛剛的
煮泡麵
再複雜化一點煮開水
->拿兩顆蛋
->同時煮泡麵和水煮蛋
->加蛋到泡麵鍋和水煮蛋鍋裡
->加辣
->試吃
->加辣
是不是有越來越複雜的傾向了呢,接著我們用
async
,await
試著做一遍,是不是看起來順利的把code扁平化了,而且一路看下來不需要兜圈子了呢The text was updated successfully, but these errors were encountered: