本文主要是介绍promise的all方法和race,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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)};
)
这篇关于promise的all方法和race的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!