- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 这是本人写的第一篇分享知识类的文章,以后也会陆续开始分享自己的一些干货,由于经验有限可能有很多不足,不过还是希望能帮到同样在努力中的你们,一起加油吧~
大家都知道async和await一般都是配套使用的,但是为什么有时候async搭配使用await并不能实现想要的同步效果呢?请继续往下看一定会解决您的一些疑惑。
- 首先看一段非常基础的一个使用async和await的例子:
function testAwait(){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve(123)
},3000)
})
}
async function testAsync(){
let n = await testAwait()
console.log(n)
}
testAsync()
上面代码会在3秒钟之后打印出123。需要注意的地方有:
如果想要等待3秒再执行testAwait后面的操作,首先testAwait函数中可以return new Promise,await返回的是一个promise对象。注意需要加上return。
- 如果不使用return,那么await后面必须是一个async函数,也就是上面的一段代码还可以写成下面这样:
async function testAwait(){
await new Promise((resolve, reject)=>{
setTimeout(()=>{
console.log(111)
resolve()
},3000)
})
}
async function testAsync(){
await testAwait()
console.log(222)
}
testAsync()
上面代码仍可以达到想要的效果,代码执行结果为:3秒中之后依次打印出111和222。
所以我们平时使用async和await的时候只需要注意这两点,基本就不会出现什么问题了,当然还有很重要的异常处理也别忘了哦。
本次小分享就是这些了,我们下期再见,拜拜~