async await & generator & promise

143 阅读1分钟

async : 主要解决内部深度嵌套问题

async function fn () { // 表示异步,这个函数里面有异步任务
    let result = await XXX; // 表示后面结果需要等待
}

async的特点

  1. async 只能放到async函数中
  2. 相比generator的语义化更强(语法糖)
  3. await后面可以是一个promise对象, 也可以是数字,字符串,布尔
  4. async函数返回的是一个promise对象
async function fn () {
	return 'welcome'
}
fn().then(res => {
	console.log(res); // welcome
})
  1. 只要await语句后面Promise状态变成reject,那么整个async函数会中断执行。
async function fn () {
	throw new Error('Error出错了~~~');
}
fn().then(res => {
	console.log(res);
}, err => {
	console.log(err); // 走到error
})