1、含義:
(1)async 用於申明一個 function 是異步的,async 函數返回一個 Promise 對象,可以使用 then 方法添加回調函數
(2)await 用於等待一個異步方法執行結果,當函數執行的時候,一旦遇到 await 就會先返回,等到觸發的異步操作完成,再接着執行函數體內后面的語句!
注:語法規定,await 只能出現在 async 函數中
不過要注意:
如果await等到的不是一個 Promise 對象,那 await 不會阻塞后面的代碼執行
如果await等到的是一個 Promise 對象,await 才會阻塞后面的代碼,等着 Promise 對象 resolve,然后得到 resolve 的值,作為 await 表達式的運算結果:
2、對比:
假設:有3個步驟,每個步驟都是異步,而且每一個步驟都需要之前步驟的結果
(1)promise的寫法:
(2)async/await的寫法:
注:不管是promise,還是async/await,只是寫法不同,為了方便而已,沒有別的特殊用途!
意義:Promise 通過 then 鏈來解決多層回調的問題,但是參數傳遞太麻煩,async/await 可以進一步優化它!