是异步编程的一种解决方案
三种状态:pending(进行中),fulfilled(已成功),rejected(已失败)
特点:状态不受外界的影响,只有异步操作的结果,决定当前是哪一种状态、一旦状态改变就不会再变(pending-->fufilled,pending-->rejected)
用法:Promise是一个构造函数,用来生产Promise实例
Promise构造函数接收一个函数作为参数,这个函数有两个参数
const p = new Promise(function(resolve,reject){
//resolve函数 :将Promise对象的状态从未完成变成成功,在异步操作成功的时候调用
resolve()//返回异步操作的结果
})
Promise实例方法
//then()当实例状态发生改变的时候的回调函数,返回的是一个新的Promise实例,也就是Promise可以链式书写的原因
const p = new Promise(function(resolve,reject){
setTimeout(()=>{
const time = new Date().getTime()
if(time%2==0){
resolve('成功的数据,time='+time)
}else{
reject('失败的数据,time='+time)
}
},1000)
})
p.then((value)=>{//resolved(已成功)的 状态
console.log('成功的',value);
},
//(reason)=>{//rejected(已失败)的状态
//console.log('失败的',reason);
//}
).catch((value)=>{
console.log(value);
})
//catch():用于指定发生错误的回调函数,一般来说通过catch替代then中第二个参数
//finally():用来指定不管Promise对象状态最后如何,都会执行的操作
p.then((value)=>{
console.log(value);
}).catch((value)=>{console.log(value);
})
.finally(()=>{
console.log('最后的结果');
})