慕码人8056858
一、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 没有resolveVM367087: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 resolveVM367087: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 resolvethrow new Error 的情况和rej一样,但是他俩只会有一个发生 另外,网络异常(比如断网),会直接进入catch而不会进入then的第二个回调