ES6 promise的三种状态与他的返回值

Promise 有三种状态 pending 进行中 resolved成功 rejected 失败

 类似于以下代码 调用 rejected 可以使  Promise  的状态从进行中改为失败,相反调用 resolved可以改为成功

     let s = new Promise((res, rej) => {

            console.log(111);

            rej('dfff') //可以把Promise状态从进行中转换为失败 然后调用then方法

        })

        s.then(() => {

            console.log(1111, res);  

        }, (obj) => {

            console.log(222);

        })

//若then的成功回调函数有返回值:

        //1.返回值非promise:返回值会作为 参数传递个下一个then的成功的回调

        //2.若返回值为promise:则该promise会成为下一个then的promise

        // let p = new Promise((resolve, reject) => {

        //     setTimeout(() => {

        //         console.log(111);

        //         resolve('数据')

        //         // reject('失败数据')

        //     }, 1000)

        // })

  // function fn1() {

        //     let p = new Promise((res, rej) => {

        //         setTimeout(() => {

        //             console.log(111);

        //             res()

        //         }, 1000)

        //     })

        //     return p

        // }

        // function fn2() {

        //     return new Promise((res, rej) => {

        //         setTimeout(() => {

        //             console.log(222);

        //             res()

        //         }, 500)

        //     })

        // }

        // function fn3() {

        //     setTimeout(() => {

        //         console.log(333);

        //     }, 200)


 

        // }

        // fn1()

        // fn2()

        // fn3()

        //希望  1--- 2---3

        // fn1().then(() => {

        //   return  fn2()

        // }).then(()=>{

        //     fn3()

        // })

        //调用resolve----成功的回调-----fn2

        // fn1().then(fn2).then(fn3);//终极目的  以同步的方式写异步代码

        // race():

        // 可以将多个promise(p1, p2, p3)封装为一个新的promise, 新的promise的状态取决于p1, p2, p3的状态

        // 1) 若p1,p2,p3任何一个先成功(fulfilled),则新的promise立即变为成功状态

        // 2) 若p1, p2,p3均失败(rejected),则promise就变为失败状态

        // all()

        // 可以将多个promise(p1, p2, p3)封装为一个新的promise, 新的promise的状态取决于p1, p2, p3的状态

        // 1) 若p1,p2,p3都成功(fulfilled),则新的promise立即变为成功状态

        // 2) 若p1, p2,p3有一个失败(rejected),则promise就变为失败状态

           以下代码就是例子

        // let p1 = new Promise((res, rej) => {

        //     setTimeout(() => {

        //         res('111')

        //         // rej('')

        //     }, 100)

        // })

        // let p2 = new Promise((res, rej) => {

        //     setTimeout(() => {

        //         // res('222')

        //         rej('222')

        //     }, 500)

        // })

        // let p3 = new Promise((res, rej) => {

        //     setTimeout(() => {

        //         // res('333')

        //         rej('333')

        //     }, 3000)

        // })

        // let p = Promise.race([p1, p2, p3])

        // p.then((res) => {

        //     console.log(res);

        // }).catch(err => {

        //     console.log('失败:', err);

        // })

        // p.then((res) => {

        //     console.log(res, '1111');

        //     return '22222'

        // }).then(res => {

        //     console.log(res);

        //     return '3333'

        // }).then((res) => {

        //     console.log(res);

        // })

   let p1 = new Promise((res, rej) => {

            setTimeout(() => {

                res('111')

                // rej('')

            }, 100)

        })

        let p2 = new Promise((res, rej) => {

            setTimeout(() => {

                // res('222')

                rej('222')

            }, 500)

        })

        let p3 = new Promise((res, rej) => {

            setTimeout(() => {

                // res('333')

                rej('333')

            }, 3000)

        })

        let p = Promise.all([p1, p2, p3])

        p.then((res) => {

            console.log(res);

        }).catch(err => {

            console.log('失败:', err);

        });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值