美文网首页
ES6——Promise

ES6——Promise

作者: 向上而活 | 来源:发表于2018-06-21 11:32 被阅读0次

Promise基本用法示例:

let i=100;

let promise=new Promise(function(resolve,reject){

if(i==100){

    resolve('相等');

}

else{

    reject('不相等');

}

});

promise.then(res=>{

    console.log(res);//相等

},err=>{

    console.log(err);

})

也可以用catch捕获错误结果:

promise.then(res=>{

    console.log(res);//相等

}).catch(err=>{

    console.log(err);

})

Promise.resolve('aa'); 将现有的东西,转化为一个promise对象,resolve状态,成功状态。

    等价于:

        new Promise.(resolve=>{

                resolve('aa');

        })

Promise.reject('aa'); 将现有的东西,转化为一个promise对象,reject状态,失败状态。

    等价于:

        new Promise.(reject=>{

                reject('aa');

        })

Promise.all([p1,p2,p3]); 把promise打包,扔到数组里,打包完成后还是一个promise对象。注意,必须确保,所有的promise对象,都是resolve状态,都是成功状态,否则报错。

let a=Promise.resolve('aa');

let b=Promise.resolve('bb');

let c=Promise.resolve('cc');

Promise.all([a,b,c]).then(res=>{

        let [res1,res2,res3]=res;

        console.log(res1,res2,res3);

}

);

Promise.race([p1,p2,p3]);只要有一个resolve状态,就不报错。

使用Promise模拟用户登陆大概流程:

let state=1;//模拟登陆成功状态

let userLogin=(resolve,reject)=>{

setTimeout(()=>{

    if(state==1){

    resolve({data:'xxxx',msg:'登陆成功',token:'xdskbhdshbhjd'});

}else{

    reject('登陆失败');

}

},2000)

};

let getuserinfo=(resolve,reject)=>{

    setTimeout(()=>{

        if(state==1){

            resolve({data:'xxxx',msg:'获取用户信息成功',token:'xdskbhdshbhjd'});

        }else{

            reject('登陆失败');

    }

    },2000)

};

new Promise(userLogin).then(res=>{

        console.log('登陆成功');

        return new Promise(getuserinfo);

}).then(res=>{

        console.log('获取用户信息成功');

})

相关文章

网友评论

      本文标题:ES6——Promise

      本文链接:https://www.haomeiwen.com/subject/wcwxyftx.html