async : 主要解决内部深度嵌套问题
async function fn () { // 表示异步,这个函数里面有异步任务
let result = await XXX; // 表示后面结果需要等待
}
async的特点
- async 只能放到async函数中
- 相比generator的语义化更强(语法糖)
- await后面可以是一个promise对象, 也可以是数字,字符串,布尔
- async函数返回的是一个promise对象
async function fn () {
return 'welcome'
}
fn().then(res => {
console.log(res); // welcome
})
- 只要await语句后面Promise状态变成reject,那么整个async函数会中断执行。
async function fn () {
throw new Error('Error出错了~~~');
}
fn().then(res => {
console.log(res);
}, err => {
console.log(err); // 走到error
})