我們往往在專案中會遇到這樣的業務需求,就是首先先進行乙個ajax請求,然後再進行下乙個ajax請求,而下乙個請求需要使用上乙個請求得到的資料,請求少了還好說,如果多了,就要一層一層的巢狀,就好像有點callback的寫法了,那是相當噁心的,下面我就來講一下如何使用es6的新特性async await進行非同步處理,使上述情況就好像寫同步**一樣,首先我們先舉個例子:
先寫上json檔案:
code.json:
person.json:,,,比如我們有兩個請求,如下,這裡用的axios:]}
function我們第二個請求獲取列表的時候需要使用第乙個請求得到的code值,只有code值為0時,才能請求,而且當做引數傳進去,那麼我們看一下常規的做法吧getcode()
function
getlist(params))
}
function看結果getfinal()
getlist(params).then(
function
(res)})}
})}getfinal();
雖然結果出來了,可是這種寫法真的挺難受的,下面來乙個async await的寫法
async function下面看結果getresult()
let list =await getlist(params);
console.log(list.data.list);}}
getresult();
當然還剩最後一點,處理異常,可以加上try catch
async function個人認為做vue專案的時候,如果對於異常沒有特殊處理,可以不加try catch,因為列印出來的錯誤跟vue自己報的錯誤是一樣的,而且還是黑的字型,不如醒目的紅色來的痛快啊!當然如果要對錯誤進行特殊處理,那麼就加上吧getresult()
let list =await getlist(params);
console.log(list.data.list);}}
catch
(err)
}getresult();
**風格是不是簡便了許多,而且非同步**變成了同步**,下面我稍微講一下後者寫法的**執行順序
首先在 function 前面加 async 用來說明這個函式是乙個非同步函式,當然,async是要和await配合使用的,第乙個請求
let code = await getcode();
await 意思是等一下,等著getcode()這個函式執行完畢,得到值後再賦值給code,然後再用code的值進行下一步操作,就是這麼簡單!!!趕緊去改**!!
es6新特性 ES6新特性(一)
var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...
ES6新特性須知
1.1es5之前函式想要賦預設值var funes5 function a,b,c 1.2es6開始函式想要賦預設值var funes6 function a 50,b 60,c 70 2.1es5之前字串拼接或者拼接屬性值只能如下var a lbj var b 50 var c name a ye...
es6新特性分享
1 字串查詢 es5使用是indexof 返回字元第一次出現的位置int值 es6新增了3個方法 includes startswith endwith 返回bool值 includes 是否包含字元 startswith 首字母是否包含字元 endwith 末尾是否包含字元 2 數值擴充套件 nu...