all 方法可以完成并行任务,它接收一个数组,数组的每一项都是一个promise对象
当数组中所有的promise的状态都达到resolved的时候,all方法的状态就会变成resolved,如果有一个状态变成了rejected,那么all方法的状态就会变成rejected。
// 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。
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)};
)