Promise.all和Promise.race的区别

const f1 = new Promise(function (resolve, reject) {
            resolve(佳佳)
        })
        const f2 = new Promise(function (resolve, reject) {
            reject(要)
        })
        const f3 = new Promise(function (resolve, reject) {
            resolve(自律)
        })
        const f4 = Promise.all([f1, f2, f3])
        f4.then(function (value) {
            console.log(value, ..成功)
        }).catch(function (error) {
            console.log(error, ...失败)  // 要
        })

        // 若f2 返回成功,那么这个value就返回一个数组["wo", "ai", "ni"],但是f2返回的值被拒绝了,那么方法所返回的 Promise 就会立刻被 拒绝,而不必等待其他的 Promise 结束

        const f5 = new Promise(function (resolve, reject) {
            setTimeout(() => {
                resolve(佳佳)
            },100)
        })
        const f6 = new Promise(function (resolve, reject) {
            reject(要)
        })
        const f7 = new Promise(function (resolve, reject) {
            resolve(自律)
        })
        const f8 = Promise.race([f5, f6, f7])
        f8.then(function (success) {
            console.log(success, ..success) 
        }).catch(function (error) {
            console.log(error, ...失败) // 要
        })
        // Promise.race([f5, f6, f7]) 调用顺序是 5,6,7,按说应该先执行f5,但是在f5执行的时候加了一个延时,这样他会加入到异步队列去执行,这样执行到f6到时候,返回的值被拒绝了,那么返回值就是这个被拒绝的值,

        // all和race区别:
        // race 翻译过来就是赛跑的意思,意味着Promise.race([f2, f1, f3]),这里面哪个参数执行的快,就返回哪一个,它不会在意返回的结果
        // all  成功的时候返回一个成功数组,只要有一个失败,则返回最先被reject失败状态的值
经验分享 程序员 微信小程序 职场和发展