async
async返回的是一个promise对象,如果自定义返回其他属性的值,会自动打包成promise对象
async function main(){
//如果返回的是一个非promise类型的数据
return 99
}
let result = main()
console.log(result)
打印结果
async function main(){
//如果返回的是一个promise对象
return new Promise((resolve,reject)=>{
resolve('ok')
})
}
let result = main()
console.log(result)
3.返回的是promise,且定义为reject,则自行进行try,catch进行捕抓
await
await必须配合async使用
1.右侧为promise的情况
async function main(){
let p = new Promise((resolve,reject)=>{
resolve('yes')
})
//1.右侧为promise的情况,await会打印出resolve的结果
let res = await p
console.log(res)//打印 yes
}
main()
2.右侧为其他类型数据
async function main(){
let p = new Promise((resolve,reject)=>{
resolve('yes')
})
//2.右侧为其他类型数据
let res2 = await 20
console.log(res2) //打印 20
}
main()
3.如果promise是失败的状态
async function main(){
let p = new Promise((resolve,reject)=>{
reject('error')
})
//3.如果promise是失败的状态
try{
let res3 = await p;
}catch(e){
console.log(e)//打印 error
}
}
main()