[程設雜筆] callback, promise, fetch, yield, async/await 發展簡易介紹
好久沒有寫技術文章了XD。快利用時間記錄一下一些心得。 這篇久違的文章,想要探討的是javascript最有魅力的一個部分,非同步 (asynchronous)。 為什麼會說它是javascript最有魅力的一個部分呢?那是因為javascript本身應用的環境就充滿了各種非同步。打個比方好了,如果前端要和後端抓個資料,總不能送出request後,就block住吧,那如果資料沒回傳回來,不就GG了?其它事情都不用做了。所以,最正確的解,一定是送完request後,就繼續去做其它事,等待回來的結果,再根據結果做事。 我想如果有耳聞promise, ES6 yield, ES7 async/await 的朋友,應該不會錯過網路上有關於它們的文章和比較。不過說實話,有認真把它們都抓起來做一個完整比較和推演的文章,其實沒有很多,希望今天這一篇可以給想要了解這部分的人一個很完整的啟發,了解關於非同步這一塊,js是怎麼演進的。 Callback 首先,我們要先講一下,到底什麼是callback。callback 是 javascript 很常用到的一種寫法,要熟悉js的話,就絕對不能不理解 callback 是什麼。 簡單來說,callback就是把A function傳進另一個 B function,當B function做完事後,就 call A function,做它該做的事。通常的用法是在讀資料庫的時候,或者call api的時候會使用到。因為這些動作都是非同步的,當做完事後,就要使用一個callback,來接這個資料,做該做的事。 要想像一下的話,大概就是今天你媽要炒菜,發現沒有醬油。剛好覺得在旁邊看電視的你太廢了,就叫你出去買罐醬油。你出去買的同時,媽媽還是在炒菜,只是沒有加醬油,沒辦法上菜罷了。於是為了省時,她就先切盤水果。 function 媽媽叫(跑腿完工作= 醬油買回來){…