1024ES6JavaScript 进阶营

19.ES6 Promise串行效果

2019-02-15  本文已影响0人  圆梦人生

ES6 Promise执行串行效果

案例

<!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 串行</title>
    <script>
        let num =1;
        // Promise 串行效果
        // 必须等到上个结果返回结果才执行下一个
        // 如果中间一个执行失败,终止后续流程
        let promiseUtil = (data)=>{
           //
           return new Promise((resolve, reject)=>{
               // data为上次Promise传入的结果
               console.log('data %o',data);
                // 使用setTimeout 模拟ajax请求
                setTimeout(()=>{
                    //
                    let sucessFlag = true;
                    // 模拟失败...
                    // if(num == 2){
                    //    // 如果最后一个请求模拟失败
                    //     sucessFlag = false;
                    // }
                    //
                    // num++
                   //
                    if(sucessFlag){
                        // 模拟成功
                        let result = {
                            sucesss: true,
                            message: '操作成功',
                            url: data.url,
                            data: {
                                name: (Math.random() * 100).toFixed()
                            }
                        }
                        // console.log(result);
                        // 返回成功结果
                        resolve(result)
                    }else{
                        // 模拟失败
                        reject({
                            sucesss: true,
                            message: '操作失败',
                            url: data.url
                        })
                    }
                }, 2000)
            })
           
        }

        // 串行效果
        let p = new Promise((resolve, reject)=>{
            console.log('开始串行 Promise...');
            resolve({
                url: 'http://www.baidu.com'
            });
        })
        // 执行Promise
        p.then(promiseUtil)
        .then(promiseUtil)
        .then(promiseUtil)
        .then((data)=>{
            console.log('请求成功');
            console.log(data);
        },(error)=>{
            console.log('操作失败');
            console.log(error);
        });
    </script>
</head>
<body></body>
</html>
上一篇下一篇

猜你喜欢

热点阅读