PromiseAll与PromiseRace
/*
* Promise.all
* 将多个Promise实例包装成一个Promise实例,成功失败的返回值是不同的;
&
* 成功的时候返回的是一个结果数组;
&
* 失败是返回最先被reject失败状态的值;
&
* ** 值得注意的是:
* Promise.all获得成功的结果数组里面的 ***数据顺序与接收到的数组顺序是一致的,
&
* 这里有一个好处: ** 前端开发中偶尔会遇到发送多个请求,并根据请求顺序获取和使用数据的场景,
&
* 使用 Promise.all无疑能解决这个问题。
*/
Promise.all([v1, v2, v3]).then(res => {
console.log('res', res);
}).catch(err => {
console.log('err', err);
})
// Promise.race
// 顾名思义,Promse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,
// 就返回那个结果,不管结果本身是成功状态还是失败状态
Promise.race([v1, v2, v3]).then(res => {
console.log('res', res);
}).catch(err => {
console.log('err', err);
})
其他 async await
// async await 让异步的程序有个先后顺序
function one() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('one函数是 2s')
}, 2000);
})
}
function two() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('two函数的是 3s')
}, 3000);
})
}
function three() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('three函数的是 1s')
}, 1000);
})
}
// async await 必须配合使用, 意义为用同步的表现方式展现异步,一定程度上延缓了异步刷新时间
// ps异步太快也不是好事
async function main() {
let v1 = await one(); //按照顺序1,2,3,而不是最快的先行
console.log(v1);
let v2 = await two();
console.log(v2);
let v3 = await three();
console.log(v3);
}
// 调用函数
main();