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失败状态的值

你可能感兴趣的:(js,ES6)