废话不多说直接上代码:
function test(mark){
return new Promise((resolve, reject)=>{
if(mark){
setTimeout(()=>{
let data={
code:0,
id:666,
title:'测试'
}
resolve(data)
},800)
}else{
reject({
code:-1,
msg:'参数异常'
})
}
})
}
(async ()=>{
try{
console.log(1)
let data=await test(true)
console.log(2)
console.log(data)
//执行结果
//1
//2
//{code:0,id:666, title:'测试' }
let data2=await test(false)
}catch(e){
console.log(e)//{code:-1,msg:'参数异常'}
}
})()
看了代码发现我加了try catch,为什么呢,因为test函数return 的不一定是 json数据 当不满足条件执行执行后会reject是promise本身,所以会导致后面let data2=await test(false) 报错。