Promise.all 和 Promise.race (怎么使用)

224 阅读1分钟

需求:计算两个异步方法,等所有请求都返回在计算他们

 Promise.all  可以接收多个promise作为参数 当所有的promise都执行结束后会返回结果,使用场景封装请求的时候使用loding加载,当这个请求完毕,另一个请求的loding也结束会形成loding闪烁,

<script>
       //下面一个例子 我需求要这两个异步方法的和,当所有的promise都执行结束后会返回结果
        let promise1 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(5)
            }, 2000)
        })

        let promise2 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(6)
            }, 1000)
        })

        // 可以接收多个promise作为参数 当所有的promise都执行结束后会返回结果
         Promise.all([promise1, promise2]).then((res) => {
             let num = res[0] + res[1]
             console.log(num);//11 promise.all函数会等所有的异步结束在执行
         });
       
    </script>

可以接收多个promise作为参数 当其中一个promise率先发生变化后就会执行的逻辑 race追赶的意思

 <script>
        let promise1 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(5)
            }, 2000)
        })

        let promise2 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(6)
            }, 1000)
        })

       
        // 可以接收多个promise作为参数 当其中一个promise率先发生变化后就会执行的逻辑 race追赶的意思
        Promise.race([promise1, promise2]).then(res => {
            console.log(res);//6  当其中一个promise率先发生变化后就会执行的逻辑,因为6是1秒比最上面快所以打印6
        })
    </script>

完 !