1.async和promise的对比
async function是Primise的语法糖封装- 异步编程的终极方案-以
同步的方式写异步
🚀图例1:
🚀图例2:
🚀图例3-reslove的情况:
- 对比可知,
async直接return一个结果,相当于在promise中直接resolve一个结果
🚀图例4-reject的情况:
async抛出错误时,和promise的reject的结果是一样滴
2.await:
🚀没有使用await的情况:
(function(){
const result = async function(){
var content = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('我在return之前被打印了');
},500)
})
console.log(content);
return '呀吼';
}();
setTimeout(function(){
console.log(result);
},800)
})()
结果如下图:
🚀使用await后的情况:
(function(){
const result = async function(){
var content = await new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('我在return之前被打印了');
},500)
})
console.log(content);
return '呀吼';
}();
setTimeout(function(){
console.log(result);
},800)
})()
结果如下图:
- 添加
await后打印的content中有内容了我在return之前被打印了(await之后是等待了500毫秒之后才往下面走😱)
再来看下await处理错误的情况:
await的特点:
await关键字可以暂停 async function的执行await关键字可以以同步的写法获取Primise的执行结果try-catch可以获取await所得到的结果