①async和await是基于Promise之上的语法糖,可以让异步操作更加简单明了
②async可以单独出现,但await必须和async搭配使用
③await等待的意思,可以让异步操作变成同步操作
具体示例
(1)正常情况下的同步代码
//没使用async和await
function one() {
return 'I am one'
}
function two() {
return 'I am two'
}
function three() {
return 'I am three'
}
function run() {
console.log(one());
console.log(two());
console.log(three());
}
run()
输出顺序
(2)第二个函数中加入setTimeOut异步函数后
//没使用async和await
function one() {
return 'I am one'
}
// 异步函数
function two() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('I am two')
}, 3000)
})
}
function three() {
return 'I am three'
}
function run() {
console.log(one());
console.log(two()); //可以看到输出的Promise是Pending进行中的状态
console.log(three());
}
run()
输出:
看出第二个函数返回正在进行中的Promise对象
(3)使用async和await
//没使用async和await
function one() {
return 'I am one'
}
// 异步函数
function two() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('I am two')
}, 3000)
})
}
function three() {
return 'I am three'
}
async function run() {
console.log(one());
console.log(await two()); //可以看到输出的Promise是Pending进行中的状态
console.log(three());
}
run()
await修饰第二个函数,这样可以等待第二个函数执行完毕之后才执行后面的,因此会按顺序输出one、two、three