1. 程式人生 > 其它 >promise和 async await 區別

promise和 async await 區別

promise和 async await 區別

    • 概念
      Promise 是非同步程式設計的一種解決方案,比傳統的解決方案——回撥函式和事件——更合理和更強大,簡單地說,Promise好比容器,裡面存放著一些未來才會執行完畢(非同步)的事件的結果,而這些結果一旦生成是無法改變的

      async await也是非同步程式設計的一種解決方案,他遵循的是Generator 函式的語法糖,他擁有內建執行器,不需要額外的呼叫直接會自動執行並輸出結果,它返回的是一個Promise物件。

    • 兩者的區別
      1. Promise的出現解決了傳統callback函式導致的“地域回撥”問題,但它的語法導致了它向縱向發展行成了一個回撥鏈,遇到複雜的業務場景,這樣的語法顯然也是不美觀的。而async await程式碼看起來會簡潔些,使得非同步程式碼看起來像同步程式碼,await的本質是可以提供等同於”同步效果“的等待非同步返回能力的語法糖,只有這一句程式碼執行完,才會執行下一句。
      2. async await與Promise一樣,是非阻塞的。
      3. async await是基於Promise實現的,可以說是改良版的Promise,它不能用於普通的回撥函式。