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()