首先,需要明白一点:只要一个函数前面加了async,那么这个函数最后return的结果一定是一个promise对象
async function async1() {
return '555'
}
console.log(async1())
结果:
如果需要拿到最终return的结果,可以通过.then方式获取结果
async function async1() {
return '555'
}
async1().then(res =>{
console.log(res)
// 555
})
也可以通过await拿到结果,因为await本身就有解析promise的作用(此处注意:await不能单独写,必须写在async异步函数里面,不然会报错)
async2()
async function async1() {
return '555'
}
async function async2() {
console.log(await async1())
// 555
}
上面具体理清楚了一遍async和await的使用,下面再具体看一下await中“等待”的使用
将下面这段代码执行一下,通过浏览器打印的顺序,我们很明显的看到await的作用
async function async1() {
await async2()
alert(111)
}
function async2() {
return new Promise(resolve => {
setTimeout(() => resolve(), 2000)
})
}
async1()
执行代码后可以发现,浏览器会等待2秒才弹出111,这样就达到一个阻塞代码的效果,强制代码同步进行,也就是所谓的“等待”!(需要注意的是,await后面装饰的函数返回的结果必须是一个promise实例对象,才可以阻塞代码)
由此应用到项目实战中,就可以在await后面写一个调用接口的promise函数,.then等到这个接口响应出对应的数据,再执行await下一行的代码!!!