async和await應用步驟分析 優化異常處理

2022-04-03 07:11:00 字數 1797 閱讀 2146

專案裡經常遇到優化**情況,例如**地獄

1

、現在比較流行的解決這個問題的方法是使用 promise,可以將巢狀的**函式展平。但是寫**和閱讀依然有額外的負擔。

2、另外乙個方案是使用 es6 中新增的 generator,因為 generator 的本質是可以將乙個函式執行暫停,並儲存上下文,再次呼叫時恢復當時的狀態。co 模組是個不錯的封裝。

但是這樣略微有些濫用 generator 特性的感覺。

所以本節我們介紹下es7的async/await使用步驟

(1)promise**函式

react或者vue專案都會封裝axios請求,如下所示

然後定義請求模組

最後引入模組並呼叫promise語法

這裡我們針對promise的**寫法做下優化

(2)步驟分析

1、首先我們想獲取返回結果,所以使用await等待執行完畢返回,如下所示

2、await需要配合async使用,即async需要放在await所在函式體的左側,如下所示

3、接著我們需要針對錯誤情況做處理,需要結合try...catch

優化完畢

(3)小結

(4)優化axios請求2:

目前為止,每一次的axios請求都需要進行try...catch的處理,所以我們接下來統一處理請求異常操作,即統一處理try...catch操作

接下來需要在api/ajax.js裡統一處理請求異常,方案:在封裝axios的外部包裹乙個自定義的promise物件,在請求出錯時不呼叫reject,而是直接顯示錯誤提示

此時元件裡便不用再用try...catch進行異常處理,如下所示

錯誤情況測試如下:

測試結果如下

(5)axios優化3

目前為止,我們發現每次請求完成都需要通過

const result = response.data

來獲取結果,如下所示

寫法較為繁瑣,所以這裡做下優化直接獲取結果就是result,修改api/ajax.js

直接返回reponse.data即可

最後直接獲取result

async和await的講解

普通的函式宣告 async function a 複製 宣告乙個函式表示式 let a async function 複製 async形式的箭頭函式 let a async 複製 async與await例項應用,基礎 控制器呼叫與server中查詢資料 exports.getbloglist asy...

async和await的使用

async其實是es7的才有的,是非同步操作的進化,其實就是封裝乙個promise的物件返回 async function test console.log test promiseasync方法在普通的函式前加上 async 關鍵字即可。執行這個函式,發現並沒有返回1111,而是通過promise...

async和await的講解

async和await的講解 宣告async函式的幾個方法 普通的函式宣告 async function a 宣告乙個函式表示式 let a async function async形式的箭頭函式 let a async 初識async和await async與await例項應用,基礎 控制器呼叫與...