async 是 promise 的语法糖。函数前面加一个 async,异步操作的方法前加一个await 关键字。顾名思义,就是让你等一下,执行完了再继续往下走。注意 :await 只能在 async 函数中执行,否则会报错。
await 的意思就是等待。
await 会等待 promise 的状态由 pending 转为 fulfilled 或者 rejected。在此期间它会阻塞,延迟执行await语句后面的语句。
<script>
console.log('主线程开始');
function demo(){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
let randNumber = Math.random();
console.log(randNumber);
if(randNumber < 0.5){
reject('执行失败');
return ;
}
let result = 0;
for (let i = 0; i < 900000000; i++){
// your code
result = i;
}
resolve(result);
}, 800);
});
}
async function runDemo(){
try{
const data = await demo();
console.log(data);
}catch(error){
console.log(error);
}
}
runDemo();
console.log('其他逻辑');
</script>
通过上面的示例我们可以看到,可以通过 await 同样简化了异步嵌套逻辑、通过 try{}catch() 语法来捕获异步错误。