專案裡經常遇到優化**情況,例如**地獄
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例項應用,基礎 控制器呼叫與...