var p = Promise.resolve(1)
p.then((value)=>{
//1、返回一个Promise 调用resolve
return new Promise(function(resolve,rejected){
resolve(value + 1)
})
//2、返回一个Promise 调用rejected
return new Promise(function(resolve,rejected){
rejected(value + 1)
})
//3、返回一个值
return value + 1;
//4、新建一个promise,使用reslove返回值
const newp = new Promise(function(resolve,rejected){
resolve(value + 1)
})
//5、新建一个promise,使用return返回值
const newp = new Promise(function(resolve,rejected){
return(value + 1)
})
//6、没有返回值
return undefined
}).then((value)=>{
console.log("情况{n}:resolve",value)
}, (res) => {
console.log("情况{n}:reject", res);
})
结果分析:
情况1:resolve 2
新建promise的resolve传出的值将作为then方法返回的promise的resolve的值传递出
结果:resolve 2
情况2:reject 2
新建promise的reject传出的值将作为then方法返回的promise的reject的值传递出
结果:reject 2
情况3:resolve 2
return的值将作为then方法返回的promise的resolve的值传递出
结果:resolve 2
情况4:resolve undefined
情况5:resolve undefined
情况6:resolve undefined
以上四、五、六种情况,then方法的函数没有返回值,导致下一个then的resolve参数是undfined
Promise 中reject 和 catch 处理上有什么区别?
reject 是用来抛出异常,catch 是用来处理异常
reject 是 Promise 的方法,而 catch 是 Promise 实例的方法
reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch
网络异常(比如断网),会直接进入catch而不会进入then的第二个回调