18.ES6 Promise.race多选一

在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>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容