关于promise中reject和catch的问题
reject和catch是否都会执行，或者只执行其中一个，分别在什么情况下执行？
### 一、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)
 })

 VM367054:2 没有resolve
 VM367054:11 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)
 })

 VM367054:2 没有resolve
 VM367054:11 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)
 })
VM367087:2 没有resolve
VM367087:9 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)
 })
VM367087:2 resolve
VM367087:9 data:: 成功了

```
- 不会进入catch的情况

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

 })

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

```
 throw new Error 的情况和rej一样，但是他俩只会有一个发生 
 另外，网络异常（比如断网），会直接进入catch而不会进入then的第二个回调 