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)
        })

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

原文地址:https://www.cnblogs.com/ashen1999/p/12917655.html