promise和 async await 區別
阿新 • • 發佈:2022-03-16
promise和 async await 區別
-
概念
Promise 是非同步程式設計的一種解決方案,比傳統的解決方案——回撥函式和事件——更合理和更強大,簡單地說,Promise好比容器,裡面存放著一些未來才會執行完畢(非同步)的事件的結果,而這些結果一旦生成是無法改變的async await也是非同步程式設計的一種解決方案,他遵循的是Generator 函式的語法糖,他擁有內建執行器,不需要額外的呼叫直接會自動執行並輸出結果,它返回的是一個Promise物件。
-
兩者的區別
- Promise的出現解決了傳統callback函式導致的“地域回撥”問題,但它的語法導致了它向縱向發展行成了一個回撥鏈,遇到複雜的業務場景,這樣的語法顯然也是不美觀的。而async await程式碼看起來會簡潔些,使得非同步程式碼看起來像同步程式碼,await的本質是可以提供等同於”同步效果“的等待非同步返回能力的語法糖,只有這一句程式碼執行完,才會執行下一句。
- async await與Promise一樣,是非阻塞的。
- async await是基於Promise實現的,可以說是改良版的Promise,它不能用於普通的回撥函式。