Promise是异步执行的一种方法,有如下API:
Promise.resolve()
Promise.reject()
Promise.prototype.then()
Promise.prototype.catch()
Promise.all() // 所有的都有完成,相当于 且
Promise.race() // 完成一个即可,相当于 或- Promise.resolve()的作用将现有对象转为Promise对象resolvedl;Promise.resolve('test')==new Promise(resolve=>resolve('test'))
- Promise.reject()也是返回一个Promise对象,状态为rejected;
- then() 成功回调
- catch():发生错误的回调函数。
- Promise.all()适合用于所有的结果都完成了才去执行then()成功的操作
一般用法:
let promise = new Promise((resolve,reject)=>{
    // 模拟执行请求接口
    getData().then((res)=>{
        // 标记成功后给定某个数据:res
        resolve(res)
    }).catch(e=>{
        // 标记失败后给定某个数据
        reject('发生错误')
    })
})
promise.then(res=>{
    console.log(res)
}).catch(e=>{
    console.log(e)
})假如有一个需求,需要同时请求三个接口,三个接口全都返回数据后再做处理,则可以使用Promise.all()这个api。举个栗子:
let p1 =new Promise((resolve,reject)=>{
    // 模拟请求接口1
    getData1().then((res)=>{
        // 标记成功后给定某个数据:res
        resolve(res)
    }).catch(e=>{
        // 标记失败后给定某个数据
        reject('发生错误')
    })
})
let p2 = new Promise((resolve,reject)=>{
    // 模拟请求接口2
    getData2().then((res)=>{
        // 标记成功后给定某个数据:res
        resolve(res)
    }).catch(e=>{
        // 标记失败后给定某个数据
        reject('发生错误')
    })
})
let p3 = new Promise((resolve,reject)=>{
    // 模拟请求接口3
    getData3().then((res)=>{
        // 标记成功后给定某个数据:res
        resolve(res)
    }).catch(e=>{
        // 标记失败后给定某个数据
        reject('发生错误')
    })
})
// results的结果是一个数组,分别代表三个接口的数据
Promise.all([p1, p2, p3]).then((results)=>{
    console.log('success:'+results)
}).catch(e=>{
    console.log("error")
    console.log(e)
})









