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

猜你喜欢

转载自blog.csdn.net/qq_30436011/article/details/120870225