外部Promise函数return await 函数

112 阅读1分钟

不 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