async、await 優缺點
async和await相比直接使用Promise來說,優勢在於處理 then 的調用鏈,能夠更清晰准確的寫出代碼。缺點在於濫用await可能會導致性能問題,因為await會阻塞代碼,也許之后的異步代碼並不依賴於前者,但仍然需要等待前者完成,導致代碼失去了並發性
下面來看一個使用 await 的代碼。

- 首先函數
b先執行,在執行到await 10之前變量a還是0,因為在await內部實現了generators,generators會保留堆棧中東西,所以這時候a = 0被保存了下來- 因為
await是異步操作,遇到await就會立即返回一個pending狀態的Promise對象,暫時返回執行代碼的控制權,使得函數外的代碼得以繼續執行,所以會先執行console.log('1', a)- 這時候同步代碼執行完畢,開始執行異步代碼,將保存下來的值拿出來使用,這時候
a = 10- 然后后面就是常規執行代碼了
