美文网首页
关于promise中reject和catch的问题

关于promise中reject和catch的问题

作者: jesse28 | 来源:发表于2021-07-15 14:55 被阅读0次

一、reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch

var p1=new Promise((resolve,rej) => {
   console.log('没有resolve')
   //throw new Error('手动返回错误')
   rej('失败了')

})

p1.then(data =>{
   console.log('data::',data);
},err=> {
   console.log('err::',err)
}).catch(
   res => {
   console.log('catch data::', res)
})

结果:

没有resolve
err:: 失败了

then中没有第二个回调的情况

 var p1=new Promise((resolve,rej) => {
    console.log('没有resolve')
    //throw new Error('手动返回错误')
    rej('失败了')

 })

 p1.then(data =>{
    console.log('data::',data);
 }).catch(
    res => {
    console.log('catch data::', res)
 })

结果:

没有resolve
catch data:: 失败了

如果没有then, 也可以直接进入catch

 var p1=new Promise((resolve,rej) => {
    console.log('没有 resolve')
    //throw new Error('手动返回错误')
    rej('失败了')

 })

 p1.catch(
    res => {
    console.log('catch data::', res)
 })

结果:

没有resolve
catch data:: 失败了

二、resolve的东西,一定会进入then的第一个回调,肯定不会进入catch

 var p1=new Promise((resolve,rej) => {
    console.log('resolve')
    //throw new Error('手动返回错误')
    resolve('成功了')

 })

 p1.then(data =>{
    console.log('data::',data);
 }).catch(
    res => {
    console.log('catch data::', res)
 })

结果

resolve
data:: 成功了

不会进入catch的情况

 var p1=new Promise((resolve,rej) => {
    console.log('resolve')
    //throw new Error('手动返回错误')
    resolve('成功了')

 })

 p1.catch(
    res => {
    console.log('catch data::', res)
 })

结果:

resolve

throw new Error 的情况和rej一样,但是他俩只会有一个发生
另外,网络异常(比如断网),会直接进入catch而不会进入then的第二个回调**
引用链接:https://www.jianshu.com/p/78711885955b

相关文章

网友评论

      本文标题:关于promise中reject和catch的问题

      本文链接:https://www.haomeiwen.com/subject/omappltx.html