前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript中优雅的处理async和await异常

javascript中优雅的处理async和await异常

作者头像
liulun
发布2019-09-29 14:23:09
8120
发布2019-09-29 14:23:09
举报
文章被收录于专栏:liulunliulun
let handler = async function(needErr) {
    return new Promise((resolve, reject) => {
        if (needErr) {
            reject(new Error('执行失败,给出错误'))
        } else {
            resolve('执行成功,没有报错')
        }
    })
}

let run = async function() {
    let result = await handler(false).catch();
    console.log(result);
    result = await handler(true).catch();
    console.log(result);
}

run();

输出:

执行成功,没有报错
(node:3428) UnhandledPromiseRejectionWarning: Error: 执行失败,给出错误

async函数总是返回promise实例

无论是return了Promise, 还是内部调用了await, 就算什么也没做,它也返回promise; 一个函数,只要被标记了async,那么它就返回Promise对象 所以上面的handler函数返回的是一个promise实例

如果一个 async 函数返回的是一个 reject 的 Promise,那么这个 Promise 依然会继续被 reject。

这行代码:let result = await handler(false).catch(); 返回的是resolve状态的promise result = await handler(true).catch(); 返回的是reject状态的promise await一个resolve状态的promise,无论有没有catch,都直接得到结果 await一个reject状态的promise,catch会抓住异常,返回异常结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • async函数总是返回promise实例
  • 如果一个 async 函数返回的是一个 reject 的 Promise,那么这个 Promise 依然会继续被 reject。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档