在ES6中可以將多個(gè)Promise.all異步請(qǐng)求并行操作:
1、當(dāng)所有結(jié)果成功返回時(shí)按照請(qǐng)求順序返回成功;
2向瓷、當(dāng)其中有一個(gè)失敗方法時(shí),則進(jìn)入失敗方法;
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Promise-all</title>
<script>
// Promise all可以增加多個(gè)Promise異步操作并行請(qǐng)求
// 當(dāng)所有結(jié)果成功返回時(shí)按照?qǐng)?zhí)行順序返回結(jié)果
// 當(dāng)其中有一個(gè)失敗方法時(shí)征唬,則進(jìn)入失敗方法
let promiseUtil = (url)=>{
//
return new Promise((resolve, reject)=>{
// 使用setTimeout 模擬ajax請(qǐng)求
// ajax....異步請(qǐng)求
setTimeout(()=>{
let sucessFlag = true;
// 模擬失敗...
// if(url.includes('baidu.com')){
// //
// sucessFlag = false;
// }
//
if(sucessFlag){
// 模擬成功
resolve({
sucesss: true,
message: '操作成功',
url: url,
data: {
name: (Math.random() * 100).toFixed()
}
})
}else{
// 模擬失敗
reject({
sucesss: true,
message: '操作失敗',
url: url
})
}
}, 2000)
})
}
// 使用Promise.all發(fā)送請(qǐng)求
// 如果中間有一個(gè)失敗亚皂,則進(jìn)入失敗方法
Promise.all([
promiseUtil('http://www.baidu.com'),
promiseUtil('http://www.g.cn'),
]).then((data)=>{
// 執(zhí)行成功
console.log('請(qǐng)求成功:');
//
let [ data1, data2 ] = data;
//
console.log(data1, data2);
}, (error)=>{
console.log('請(qǐng)求失敗:')
console.log(error);
})
</script>
</head>
<body>
</body>
</html>