async和await使用方法

async

async是一个修饰符,用来声明一个异步函数,async定义的函数默认返回一个Promise对象resolve的结果
因此,对async函数可以直接进行then操作,返回的值即为then方法中传入的函数

async function foo() {
	console.log(1)
	return 1
}

foo().then(res => {
	console.log(res) // 1, 1
})
async function foo() {
	return new Promise((resolve, reject) => {
		console.log('Promise')
		resolve('Promise')
	})
}

foo().then(res => {
	onsole.log(res) // 'Promise', 'Promise'
})

await

await也是一个修饰符,await关键字只能放在async函数中使用,作用是获取Promise中返回的内容
await 表达式会暂停当前async function的执行,等待Promise处理完成
Promise正常处理(status更改为fulfilled),其回调的resolve函数参数作为await表达式的值,继续执行async function
Promise处理异常(status更改为rejected),await表达式会把Promise的异常原因抛出
另外,如果await操作符后的表达式的值不是一个Promise,则返回该值本身

function fn() {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			console.log('hello')
			resolve('hello')
		})
	})
}

async function foo() {
	const data = await fn()
	console.log(data) // 'hello', 'hello'
}

async/await错误处理

使用try…catch…包裹await表达式

function fn() {
	return new Promise((resolve, reject) => {
		reject('throw new error') // 使用 reject 进行错误抛出
	})
}

async function foo() {
	try {
		await fn()
	} catch (e) {
		console.log(e) // 'throw new error'
	}
}

async/await总结

async函数可能包含0个或者多个await表达式
await表达式会暂停整个async函数的执行进程并出让其控制权,只有当其等待的基于Promise的异步操作被兑现或被拒绝之后才会恢复进程
Promise的解决值会被当作该await表达式的返回值
使用async / await关键字就可以在异步代码中使用普通的try / catch代码块。
await关键字只在async函数内有效。如果你在async函数体之外使用它,就会抛出语法错误SyntaxError
async / await的目的为了简化使用基于Promise的API时所需的语法
async函数一定会返回一个Promise对象。如果一个async函数的返回值看起来不是Promise,那么它将会被隐式地包装在一个Promise

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值