當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS高级——await-async
生活随笔
收集整理的這篇文章主要介紹了
JS高级——await-async
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、異步函數 async function
async關鍵字用于聲明一個異步函數:
- async是asynchronous單詞的縮寫,異步、非同步;
- sync是synchronous單詞的縮寫,同步、同時;
async異步函數可以有很多中寫法:
二、異步函數的執行流程
異步函數的內部代碼執行過程和普通的函數是一致的,默認情況下也是會被同步執行。
異步函數有返回值時,和普通函數會有區別:
-
情況一:異步函數也可以有返回值,但是異步函數的返回值會被包裹到Promise.resolve中;
-
情況二:如果我們的異步函數的返回值是Promise,Promise.resolve的狀態會由Promise決定;
-
情況三:如果我們的異步函數的返回值是一個對象并且實現了thenable,那么會由對象的then方法來決定;
如果我們在async中拋出了異常,那么程序它并不會像普通函數一樣報錯,而是會作為Promise的reject來傳遞:
三、await關鍵字
async函數另外一個特殊之處就是可以在它內部使用await關鍵字,而普通函數中是不可以的。
await關鍵字有什么特點呢?
- 通常使用await是后面會跟上一個表達式,這個表達式會返回一個Promise;
- 那么await會等到Promise的狀態變成fulfilled狀態,之后繼續執行異步函數;
如果await后面是一個普通的值,那么會直接返回這個值;
如果await后面是一個thenable的對象,那么會根據對象的then方法調用來決定后續的值;
如果await后面的表達式,返回的Promise是reject的狀態,那么會將這個reject結果直接作為函數的Promise的reject值;
總結
以上是生活随笔為你收集整理的JS高级——await-async的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RIP协议及距离向量算法(详解)
- 下一篇: JavaScript高级之构造函数和原型