18.ES6 Promise.race多选一
2019-02-15 本文已影响0人
圆梦人生
在ES6种Promise.race多个请求时,会以最先响应结果作为最终数据,其他的则被丢弃
案例:
<!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.race</title>
<script>
// Promise.race
// 最先成功或者失败响应结果为最终数据,其他的将被丢弃
let promiseUtil = (url)=>{
//
return new Promise((resolve, reject)=>{
// 使用setTimeout 模拟ajax请求
// ajax....异步请求
setTimeout(()=>{
let sucessFlag = true;
// 模拟失败...
// if(url.includes('g.cn')){
// //
// 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.race([
promiseUtil('http://www.g.cn'),
promiseUtil('http://www.baidu.com')
]).then((data)=>{
console.log('请求成功:');
console.log(data);
}, (error)=>{
console.log('请求失败:');
console.log(error);
})
</script>
</head>
<body>
</body>
</html>