知識拓展
async function
用來定義一個返回AsyncFunction
對象的異步函數。異步函數是指通過事件循環異步執行的函數,它會通過一個隱式的Promise
返回其結果。
語法
async function name([param[, param[, ... param]]]) { statements }
參數
name
函數名稱。
param
要傳遞給函數的參數。
statements
函數體語句。
返回值
返回的Promise
對象會運行執行(resolve
)異步函數的返回結果,或者運行拒絕(reject
)——如果異步函數拋出異常的話。
示例
async function fn(){ //表示異步,這個函數裏面有異步任務
let result = await xxx //表示後面結果需要等待數據讀取完後執行
}
async特點
await
只能放到async
函數中- 相比
genrator
語義化更強 await
後面可以是promise
對象,也可以是數字、字符串、布爾async
函數返回的是一個promise
對象- 只要
await
語句後面Promise
狀態變成reject
, 那麼整個async
函數會中斷執行
示例代碼
你可以通過下面這段代碼來體會一下
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
async function asyncCall() {
console.log('calling');
var result = await resolveAfter2Seconds();
console.log(result);
// expected output: 'resolved'
}
asyncCall();