PromiseAll与PromiseRace


PromiseAll与PromiseRace

            /*
            * Promise.all
            * 将多个Promise实例包装成一个Promise实例,成功失败的返回值是不同的;
            &
            * 成功的时候返回的是一个结果数组;
            &
            * 失败是返回最先被reject失败状态的值;
            &
            * ** 值得注意的是:
            * Promise.all获得成功的结果数组里面的 ***数据顺序与接收到的数组顺序是一致的,
            &
            * 这里有一个好处: ** 前端开发中偶尔会遇到发送多个请求,并根据请求顺序获取和使用数据的场景,
            &
            * 使用 Promise.all无疑能解决这个问题。
            */

            Promise.all([v1, v2, v3]).then(res => {
                console.log('res', res);
            }).catch(err => {
                console.log('err', err);
            })
            
            // Promise.race

            // 顾名思义,Promse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,

            // 就返回那个结果,不管结果本身是成功状态还是失败状态

            Promise.race([v1, v2, v3]).then(res => {
                console.log('res', res);
            }).catch(err => {
                console.log('err', err);
            })

其他 async await

        // async  await 让异步的程序有个先后顺序

        function one() {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve('one函数是  2s')
                }, 2000);
            })
        }

        function two() {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve('two函数的是 3s')
                }, 3000);
            })
        }

        function three() {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve('three函数的是 1s')
                }, 1000);
            })
        }

        // async   await 必须配合使用,  意义为用同步的表现方式展现异步,一定程度上延缓了异步刷新时间

        // ps异步太快也不是好事

        async function main() {
            let v1 = await one();  //按照顺序1,2,3,而不是最快的先行
            console.log(v1);
            let v2 = await two();
            console.log(v2);
            let v3 = await three();
            console.log(v3);
        }

        // 调用函数
        main();

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录