ES6语法(七)Promise

1. Promise

  ECMAscript 6 原生提供了 Promise 对象。Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。

1.1. 说明

1.1.1. 单个异步程序

    //检测机构
    //resolve : 表示成功的状态
    //reject : 表示失败的状态
    new Promise((resolve,reject) => {
        if(处理异步程序){
            resolve([参数]);
        }else{
            reject([参数]);
        }
    })
    .then(([参数]) => {
        ...
    })
    .catch(([参数]) => {
        ...
    })

1.1.2. 多个异步程序

//解决多个异步程序
new Promise((resolve,reject) => {
    if(处理异步程序){
        resolve([参数]);
    }else{
        reject([参数]);
    }
})
.then(([参数]) => {
    return new Promise((resolve,reject) => {
        if(处理异步程序){
            resolve([参数]);
        }else{
            reject([参数]);
        }
    })
})
.then(([参数]) => {
    return  new Promise((resolve,reject) => {
        if(处理异步程序){
            resolve([参数]);
        }else{
            reject([参数]);
        }
    })
})
……
.then(([参数]) => {
    if(处理异步程序){
        resolve([参数]);
    }else{
        reject([参数]);
    }
})
.catch([参数] => {

})

// 3秒输出1,再过两秒输出2,再过1秒输出3,再过0.5秒输出4
            new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    resolve(1);
                },3000)
            })
            .then((data)=>{
                alert(data);
                return new Promise((resolve,reject)=>{
                    setTimeout(()=>{
                        resolve(2);
                    },2000)
                })
            })
            .then((data)=>{
                alert(data);
                return new Promise((resolve,reject)=>{
                    setTimeout(()=>{
                        resolve(3);
                    },1000)
                })
            })
            .then((data)=>{
                alert(data);
                setTimeout(()=>{
                    alert(4)
                },500)
            })

1.2. Promise的对象方法

then() : 当promise返回resolve状态时,你可以调用then方法进行后续的操作
catch() : 当promise返回reject状态时,你可以调用catch方法进行后续的操作

1.3. Promise当中的三种状态

pending: 初始状态,不是成功或失败状态。
fulfilled: 意味着操作成功完成。
rejected: 意味着操作失败。

1.4. Promise的静态方法

Promise.all() : 当all中所有的Promise对象都返回resolve时,这个promise对象才返回resolve状态。如果其中有一个promise对象返回reject时,当前的promise对象返回reject状态。