问答

关于promise化的一些疑问,哪位老哥可以帮忙看看?

作者:admin 2021-04-22 我要评论

前端菜鸟er,最近在看promise相关概念的时候,有了一下疑问: //then的使用方法 promise.then(onCompleted, onRejected); //catch的使用方法 promise.catch((err...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

前端菜鸟er,最近在看promise相关概念的时候,有了一下疑问:
//then的使用方法

promise.then(onCompleted, onRejected);

//catch的使用方法

promise.catch((error)=>{
    reject(error)
})

我不明白的是在then()里面的onRejected函数和catch中的reject有啥区别?

我个人理解的话主要是以下区别:
then是指进入了fulfilled后执行的代码,而onRejected仅仅是针对then中所执行的任务失败后才会调用;而 catch是指进入了rejected函数后执行的代码,也就是说reject是在这种状况下才会调用

但是去看官方文档贴的图发现,fufilled和rejected二者都可以执行then,所以我有点晕了...
望老哥可以指点一下!感谢

###

其实还是有点区别的,在于写不写then的第二个参数

p.then(() => {
    a.c() //a报错
}, () => {
    // p的报错
    // throw c报错
}).catch(err => {
    // a 和 c的报错
})

这个在开发过程中错误容易引起理解错误,以为是p的错误,其实还包含了a的调用错误

p.then(() => {
    a.c() //a报错
}).catch(err => {
    // p 和 a的报错
})
###

因为一开始只有 then 啊,第一个参数处理正常流程,第二个参数处理异常流程。但你想只处理错误怎么办?我只关心正常流程的时候可以第二个参数不传,挺优雅,但只关心错误的时候第一个就要传 null ,不优雅,不优雅。

于是你就有了 .catch 。

完。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 关于promise化的一些疑问,哪位老哥可

    关于promise化的一些疑问,哪位老哥可

  • Antd Table嵌套DatePicker,如何将Date

    Antd Table嵌套DatePicker,如何将Date

  • 关于Seata分布式事务的小问题

    关于Seata分布式事务的小问题

  • 2021-02-25:给定一个正数数组arr,请

    2021-02-25:给定一个正数数组arr,请

腾讯云代理商
海外云服务器