前端菜鸟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 。
完。