async-await是es6中,处理异步事务的一种实现形式,通过关键字async将方法标记为异步方法,并返回一个Promise,帮助我们更好地使用Promise。
# async
超级简单,直接对function进行标记,表示该方法会返回一个promise。
// 定义
async function print() {
return 0
}
// 调用
print().then(alert)
# await
只能用在async包含的方法中,等待被标记为await的方法执行完并返回结果,才会执行下一步程序。
async function print() {
const id = await getId()
alert(id)
}
当异步程序出现错误时,也就是进入reject()执行,后续程序会不执行,所以一般将await放入try-catch中。
async function print() {
try {
const id = await getId()
}catch (e) {
alert(e)
}
// reject之后这一句将不会打印
console.log('next')
}
// 调用,会打印出错误,同时也会打印出下一步next
print().then(res => {
console.log(res)
})