promise的all方法和race

all 方法可以完成并行任务,它接收一个数组,数组的每一项都是一个promise对象

当数组中所有的promise的状态都达到resolved的时候,all方法的状态就会变成resolved,如果有一个状态变成了rejected,那么all方法的状态就会变成rejected。

javascript 复制代码
 // all 方法可以完成并行任务,它接收一个数组,数组的每一项都是一个promise对象
        // 当数组中所有的promise的状态都达到resolved的时候,all方法的状态就会变成resolved,如果有一个状态变成了rejected,那么all方法的状态就会变成rejected。
        window.onload = function () {
            // 在这里编写需要在页面加载完成后执行的代码
            let promise1 = new Promise((resolve, reject) => {
                resolve({
                    code: 200,
                    data: [
                        {
                            weight: 1,
                            name: '测试数据一',
                            sex: '0',
                            status: '正常'
                        },
                        {
                            weight: 2,
                            name: '测试数据二',
                            sex: '1',
                            status: '正常'
                        }
                    ]
                })
            })
            let promise2 = new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve({
                        code:200,
                        data:[
                            {
                                name:"长官三",
                                age:'18'
                            }
                        ]
                    })
                }, 1000)
            })

            let promise3 = new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve(3)
                }, 3000)
            })
            Promise.all([promise1, promise2, promise3]).then((res) => {
                console.log(res)
            })
        };

race方法和all一样,接受的参数是一个每项都是promise的数组,但是与all不同的是,当最先执行完的事件执行完之后,就直接返回该promise对象的值。如果第一个promise对象状态变成resolved,那自身的状态变成了resolved;反之第一个promise变成rejected,那自身状态就会变成rejected。

javascript 复制代码
let promise1 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
       reject(
    {
                    code: 200,
                    data: [
                        {
                            weight: 1,
                            name: '测试数据一',
                            sex: '0',
                            status: '正常'
                        },
                        {
                            weight: 2,
                            name: '测试数据二',
                            sex: '1',
                            status: '正常'
                        }
                    ]
                }


);
	},2000)
});
let promise2 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
       resolve(2);
	},1000)
});
let promise3 = new Promise((resolve,reject)=>{
	setTimeout(()=>{
       resolve(3);
	},3000)
});
Promise.race([promise1,promise2,promise3]).then(res=>{
	console.log(res);
	//结果:2
},rej=>{
    console.log(rej)};
)
相关推荐
程序喵大人28 分钟前
【C++进阶】STL算法与函数对象 - 09 函数对象保存状态并复用规则
开发语言·c++·算法·stl·函数对象
程序员黑豆4 小时前
Java包装类:基本类型与对象的桥梁
java·前端·ai编程
hsjiasb7 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
bugcome_com7 小时前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json
To_OC7 小时前
写了三天 Next.js,我的 React 世界观被拆了又装回去
前端·全栈·next.js
独泪了无痕7 小时前
viewer.js 安装与配置指南:实现图片预览功能
前端·vue.js
丰锋ff7 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘7 小时前
C语言梦开始的地方7:函数
c语言·开发语言
月华路8 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
gugucoding8 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言