不 catch 内部 return 出去的 await 函数
async function getUserInfo () {
// 没有 catch
return await getFromBridge()
}
async function getFromBridge () {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject("bridge get user info error")
}, 2000)
})
}
getUserInfo()
.then(e=>console.log('成功', e))
.catch(e=>console.log('失败',e)) // 最终走到这里!!
// 执行结果:
// 失败 bridge get user info error
catch 内部 return 出去的 await 函数
async function getUserInfo () {
return await getFromBridge().catch((e) => { // 有 catch
return console.log('func getUserInfo fail',e) // 执行经过此处
})
}
async function getFromBridge () {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject("bridge get user info error")
}, 2000)
})
}
getUserInfo()
.then(e=>console.log('成功', e)) // 最终走到这里!!
.catch(e=>console.log('失败',e))
// 执行结果:
// func getUserInfo fail bridge get user info error
// 成功 undefined
总结:
return 一个 await 函数 且catch的话,则相当于 return Promise.resolve()
不catch,则相当于把结果直接 return, 结果可能是 resolve,也有可能是reject