async是一个修饰符,async定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,async函数返回的值即为then方法的传入函数
示例
async function a(){
return 'async函数返回的参数';
}
a().then(res=>{
console.log(res) //async函数返回的参数
})
await关键字只能放在async函数内部,await关键字的作用就是等待右侧表达式返回的内容,如果右侧表达式返回的不是Promise对象,则该返回值就是await等到的值;如果右侧表达式返回的是Promise对象,await就会阻塞后面的代码,等待resolve或者reject返回值
示例
async function c(){
var a = await 1
var b = await new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('5秒')
},5000)
})
console.log(a,b) //5秒后输出 1 5秒
}
c()
若执行
reject返回,await会将reject的返回值作为异常抛出,搭配try、catch使用可以使代码更加清晰
示例
async function c(){
try{
var b = await new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('5秒')
},5000)
reject('异常原因')
})
} catch (err){
console.log(err) // 异常原因
}
}
c()