Promise简单使用

1.Promise含义

Promise 是异步编程的一种解决方案,是一种链式的变成。

一段简单的使用

function helloPromise(ready) {
        return new Promise((resolve, reject)=>{
            if(ready)
            {
                resolve('helloPromise');
            }
            else{
                reject('error');
            }
        });
    }

    helloPromise(true).then((message)=> {
        alert(message);
    }, (error)=> {
        alert(error);
    });

Promise的状态有三种

pending(进行中)

fulfilled(已成功)

rejected(已失败)

 

then和catch的用法

catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数。使用catch写法比一般写法更加清晰。

function helloPromise(ready) {
        return new Promise((resolve, reject)=>{
            if(ready)
            {
                resolve('helloPromise');
            }
            else{
                reject('error');
            }
        });
    }

    helloPromise(false).then((message)=> {
        alert(message);
    }).catch((error)=> {
        alert(error);
    }); 

Promise.all用于将多个Promise包装成一个新的Promise

Promise.all([p1, p2, p3]);

它们会按照包装的先后顺序依次执行

let p1=new Promise((resolve)=>{
        setTimeout(()=>resolve('hello'),2000);
    });
    let p2=new Promise((resolve)=>{
        setTimeout(()=>resolve('promise',1000));
    });
    Promise.all([p1,p2]).then((message)=>{
        console.log(message);
    });

Promise.race和Promise.all不同,只要其中有一项Promise执行完成就执行后续操作

let p1=new Promise((resolve)=>{
        setTimeout(()=>resolve('hello'),2000);
    });
    let p2=new Promise((resolve)=>{
        setTimeout(()=>resolve('promise',1000));
    });
    Promise.race([p1,p2]).then((message)=>{
        console.log(message);
    });

上面代码只返回promise  

posted @ 2017-12-20 14:14  不骄不傲  阅读(241)  评论(0编辑  收藏  举报