ES6语法之异步编程-Promise

Promise

分解异步操作,避免回调地狱

 

           //1.promise
            //分解异步操作,避免回调地狱
            function testMise(value) {
                //resolve成功后回调
                //reject失败后回调
                return new Promise((resolve, reject) => {
                    //模拟异步请求
                    setTimeout(() => {
                        console.log('请求中:', value)
                        if (value > 0) {
                            resolve('请求完成');
                        }
                        if (value < 0) {
                            reject('请求失败' + value);
                        }
                    }, 2000)
                })
            }

            //promis函数返回.then()成功后执行.catch()失败后执行
            testMise(-1).then(res => {
                console.log(res)
            }).catch(err => {
                console.log(err)
            })


2.若有多个异步函数依次执行完成再执行下一个函数时


            //2.若有多个异步函数依次执行完成再执行下一个函数时
            function testEmploy() {
                //使用链式调用
                //注意then()方法里返回的必须是下一个promise函数
                testMise(5).then(res => { //请求中5
                    return testMise(4) //请求中4
                }).then(res => {
                    return testMise(3) //请求中3
                }).then(res => {
                    //请求失败则进入下一个then第二个参数
                    return testMise(-1) //请求中-1
                }).then(res => {
                    console.log(res)
                }, err => {
                    console.log(err) //请求失败-1
                    return testMise(1) //请求中1
                }).then(res => {
                    console.log(res) //请求完成
                }).catch(err => {
                    console.log(err)
                })
            }

            testEmploy();


3.Promise.all

全部异步函数执行完成后再执行then回调

            //3.Promise.all
            // 全部异步函数执行完成后再执行then回调
            //res是返回所有函数的参数的数组,
            Promise.all([testMise(7), testMise(8), testMise(9), testMise(1)]).then(res => {
                console.log('全部执行完成', res)
            })

4.Promise.race

有一个执行完成就执行then回调

            //4.Promise.race
            //有一个执行完成就执行then回调
            //res是返回第一个执行完成的参数
            Promise.race([testMise(11), testMise(12), testMise(13), testMise(14)]).then(res => {
                console.log('有一个执行完成', res)
            })

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值