異步
将函數作為關鍵字放在其前面表示該函數是異步函數,這意味着該函數的執行不會阻止後續代碼的執行 異步函數調用與普通函數一樣
您可以先看到執行順序是否是函數,但函數的傳回結果為 Product 對象,應使用該方法擷取 Promise 的傳回值
此時,第一個輸出是一個文本字元串,表示異步函數的執行不會阻塞代碼的執行,async的内部實作原則是,如果函數中有一個傳回值,在調用時,預設會在内部調用Promispise.solve()方法,将其轉換為産品對象作為傳回, 如果函數在内部引發錯誤,請調用 Promise.reject() 傳回 Product 對象
由于異步傳回 Promise 對象,是以他可以使用 Promise 的所有用法(如 Promise.catch)來捕獲異常。
等待
等待正在等待承諾對象。它隻能在異步函數異步函數中使用,否則将報告錯誤
其傳回值不是 Promise 對象,而是 Promise 對象處理的結果
await 表達式暫停目前異步函數處理的執行,等待 Promise 處理完成。如果 Promise 正常處理 ,則其回調的 resolve 函數參數繼續作為 await 表達式的值執行異步函數,如果 Promise 處理異常,則 await 表達式将引發 Promise 異常的原因。如果 await 運算符後面的表達式的值不是 Promise,則該值将轉換為正常處理的 Promise。
與承諾相比
1、不再需要多層方法
假設一個業務分許多步驟完成,每個步驟都是異步的,具體取決于上一步的結果。

2、可并行處理承諾
作者:不怕榛子
相關連結: https://www.jianshu.com/p/fb1da22f335d
來源:簡單書
版權歸作者所有。商業複制請聯系作者進行授權,非商業複制請注明出處。