前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >promise思考

promise思考

作者头像
windseek
发布2018-06-15 16:58:47
3660
发布2018-06-15 16:58:47
举报
文章被收录于专栏:杨龙飞前端杨龙飞前端

我写了三个单元块,分别对应三种业务场景

代码语言:javascript
复制
let query;
query = (url) => {
    url=url||"传递的参数为空";
    return new Promise((resolve,reject) => {
        setTimeout(() => {
            console.log(url);
            if(true){
                resolve("我是promise执行后传递过来的数据");
            }else{
                reject();
            }

        }, 3000)
    }).catch((error)=>{console.log(error)});
};
//基本链式调用
//直接传入query会取上一个promise传递过来的参数,使用()=>query()会传递空参数,其他的就传递相应的参数
function basicChain(){
    query("test1")
        .then(query)
        .then(()=>"then 传递的参数")
        .then((data)=>query(data))
        .then(()=>query())
        .then(()=>query("test2"))
        .then(()=>query("test3"))
}

//按照一定顺序循环调用
function loopChain(){
    let queryloop=Promise.resolve(0);
    for(let j=0;j<10;j++){
        queryloop=queryloop.then(()=>query("test"+j));
    }
}

//无顺序执行promise;
function unsortChain(){
    let arrCreate=()=>{
        let arr=[];
        for(let i=1;i<11;i++){
            arr.push(query("test"+i));
        }
        return arr;
    }
    let arr=arrCreate();
    Promise.all(arr)
        .then(()=>{console.log("promise 全部执行了")})
        .catch(function(error){console.log(error)});
}

登录小逻辑
代码语言:javascript
复制
<script>
        let status = 1;
        let userLogin = (resolve, reject) =>{
            setTimeout(()=>{
                if(status == 1){
                    resolve({data:'登录成功', msg:'xxx', token:'xxsadfsadfas'});
                }else{
                    reject('失败了');
                }
            },2000);
        };

        let getUserInfo = (resolve, reject) =>{
            setTimeout(()=>{
                if(status == 1){
                    resolve({data:'获取用户信息成功', msg:'asdfasdf', token:'xxsadfsadfas'});
                }else{
                    reject('失败了');
                }
            },1000);
        }

        new Promise(userLogin).then(res=>{
            console.log('用户登录成功');
            return new Promise(getUserInfo);
        }).then(res=>{
            console.log('获取用户信息成功');
            console.log(res);
        })
    </script>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档