Promise.then方法 返回值

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的第二个回调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值