- async作为修饰关键字修饰在函数前,表示该函数是一个异步函数
- await的使用必须有async关键字
- await等待的必须是一个promise对象
- async返回的是一个promise对象
asyn function A(){ return '星星';}
A().then(result=>{console.log(result);})
没有await的执行
function A(){
return new Promise((resolve,reject)=>{
setTimeout(function(){
var num = Math.ceil(Math.random()*20); //生成1-10的随机数
console.log('随机数生成的值:',num)
if(num<=10){
resolve(num);
}
else{
reject('数字太于10了即将执行失败回调');
}
}, 2000);
})
return p;
}
async function B(){
console.log('a前');
A();
console.log('a后');
}
B();
加上await的执行
function A(){
return new Promise((resolve,reject)=>{
setTimeout(function(){
var num = Math.ceil(Math.random()*20); //生成1-10的随机数
console.log('随机数生成的值:',num)
if(num<=10){
resolve(num);
}
else{
reject('数字太于10了即将执行失败回调');
}
}, 2000);
})
return p;
}
async function B(){
console.log('a前');
await A();
console.log('a后');
}
B();
得出结论:异步执行时,遇到await时,会等待promise返回结果,之后再执行下面的代码,(阻塞后面代码)看起来像是同步一样
注意:await不会阻塞async以外的代码。