async+await是es7提出來的概念,它也是爲了解決回調地獄的問題,它只是一種語法糖,從本質上講,await
函數仍然是promise,
值得注意的是,async
和await
必須要一起使用。
用法:首先在 function 前面加 async 用來說明這個函數是一個異步函數
然後在async裏面寫await
例如:
async function a(y){
let sum = await b(3,4)
let c= sum+y;
console.log(c)
}
function b (x,y){
return x+y;
}
a(10)
上面的例子中:sum變量是等着b()這個函數執行完畢纔有值的 ,其實await和promise中的 .then()差不多
使用promises
,異步函數有兩個可能的返回值:已解析的值和被拒絕的值。我們可以.then()
用於正常情況,.catch()
用於特殊情況。但是,async/await
錯誤處理可能會很棘手。
try…catch
最標準的(我推薦的)方法是使用try...catch
語句。當一個await
調用時,任何被拒絕的值都將作爲異常拋出。
例如:
async function a(y){
try{
let a = await b(3,4)
let c= a+y;
console.log(c)
}catch(err){
console.log(err);
}
}
function b (x,y){
return x+y;
}
a(10,)