promise中的all方法和race方法

这两个方法,都是并行执行多个异步操作。而不同的是,all方式遵循“谁跑得慢,以谁为准执行回调”,而race遵循的是“谁跑的快,以谁为准执行回调”

以下为两个异步函数

function yibu1() {
            var p1 = new Promise((resolve, reject) => {
                setTimeout(() => {
                resolve('第一个异步执行成功')
            },3000)
            })
            return p1
        }

        function yibu2() {
            var p2 = new Promise((resolve, reject) => {
                setTimeout(() => {
                resolve('第二个异步执行成功')
            },2000)
            })
            return p2
        }

当使用all实现并行执行时,结果如下

Promise.all([yibu1(), yibu2()]).then(function (res) {
            console.log(res)
        }).catch(function (reason) {
            console.log(reason)
        })

返回的是每个异步函数执行回调后的结果组成的数组

 

当使用race实现并行执行时,结果如下

Promise.race([yibu1(), yibu2()]).then(function (res) {
            console.log(res)
        }).catch(function (reason) {
            console.log(reason)
        })

谁先执行结束,谁先进入回调

posted @ 2020-05-19 16:17  ashen1999  阅读(1013)  评论(0编辑  收藏  举报