对于Promise,我更多地理解为一种异步编程的方式,通过状态的转换来完成异步编程。
一个构造函数
注册一个Promise对象,通常以下面形式创建构造函数
const p = new Promise((resolve,reject) => {
if(条件成立) {
resolve()
}
if(条件失败) {
reject()
}
})构造函数中存在一个函数参数,函数中存在两个参数,分别是resovle、reject。通过resolve可以将promise状态更改为fulfilled,通过reject可以将promise状态更改为rejected,关于状态,可以从下面得知相关信息。个人理解认为,resovle通常是返回成功之后的结果,reject返回失败之后的结果。
两个实例方法
将Promise对象实例化,有两种实例方法,分别是 .then()、.catch() 。then()接收Promise中resolve返回的内容,catch()接收Promise中reject返回的内容。
p.then( res => {
console.log(res)
})
.catch( err => {
console.log(err)
}) 三种状态
Promise对象有三种状态,分别是pending、fulfilled、rejected,代表待定、已执行、已拒绝。fulfilled和fulfilled可以归结为已完成的状态。
优势
链式编程方式
Promise异步函数编程的方式,将程序员从多重函数回调的繁琐编程中解脱,以简单明了的编程方式,完成多重异步函数。
promise.then(异步函数)
.then(异步函数)
.then(异步函数)这样的方式,可以理解为只有第一个异步函数执行成功,然后在下一个then方法中接收上一步函数返回结果作为参数,进而继续执行下一步函数。通过链式编程,简单明了,不容易出错,这也是,我个人理解的异步编程方式。
异步任务并行
如果我们需要多个异步函数同时执行,通过Promise方式大大简化代码
Promise.all([
getData1(),
getData2(),
getData3()
]).then( datas => {
// 数据处理
})通过Promise同时执行三个获取数据的方式,然后可以在datas获取它们执行的结果,然后进行相应的数据处理。